+ JavaScript の質問用スレッド vol.83 +
1 :
Name_Not_Found :
2011/01/17(月) 20:55:21 ID:uRyN2JFp
2 :
Name_Not_Found :2011/01/17(月) 20:56:08 ID:uRyN2JFp
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
3 :
Name_Not_Found :2011/01/17(月) 20:56:21 ID:uRyN2JFp
【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A8. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
4 :
Name_Not_Found :2011/01/17(月) 20:56:35 ID:uRyN2JFp
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 IEでは要素オブジェクトのプロパティcurrentStyleを使う。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。 Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが 「"...this..."」とか「function(){...this...}」ではうまく行きません。 A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中) Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。
5 :
Name_Not_Found :2011/01/17(月) 20:56:52 ID:uRyN2JFp
【FAQその3】 Q16. input type="file"の値を設定(参照)できないのですが… A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが… A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。 【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
6 :
Name_Not_Found :2011/01/17(月) 20:57:12 ID:uRyN2JFp
7 :
Name_Not_Found :2011/01/17(月) 20:57:28 ID:uRyN2JFp
なんか、HTML5のJavaScript関連とかをまとめて整理して載せる ようにした方がいいんじゃないかと思えてきた。
12 :
Name_Not_Found :2011/01/18(火) 20:50:59 ID:emSMVatA
フラグたくさんついてるスクリプトってかっこいい?ださい?
ストレージ関連っていろいろなかったっけ いろいろあるのはgoogle chrome界隈だけだっけ
>>16 要約
WebSocketsには穴があってキャッシュを汚染できる脆弱性があるということ。
そしてこれはプロトコルの問題であって、ブラウザは関係なくFlashやJavaにも影響すること。
なのでFirefoxとOperaはこの問題が解消するまで実装を無効にしている。
>>15 webkitもgeckoもnightlyではそんなに大差ないと思うよ
>>8-11 たしかに沢山あるんで、HTML5関連のはここを見ろという
1行だけテンプレに入れる?それとも1レスぶんの説明を追加?
ともかくFile API+D&D「だけ」FAQを3項目追加とかはアンバランス
なのでやめた方がいいと思われ。
JSAN(
http://www.openjsan.org/ )って使ったこと無いんだけどどうですか?
使い方も何も分かんないんですけど、prototypeやjQueryなんかと違うのでしょうか?
デモなんかも見つからなかったのでどうなんだろうと思いまして
皆さんはどういう場合に使ったりするのでしょうか?
>>21 ぐぐってみたけど、比べるもんじゃない気がする
23 :
Name_Not_Found :2011/01/19(水) 14:16:40 ID:LI5o/N0R
javascriptが上達する為にはどうすればいいですか? あとお手本になるようなサイトはありませんか? できるだけ大規模なものがいいです!
24 :
Name_Not_Found :2011/01/19(水) 14:33:16 ID:BdpEnohD
このスレのテンプレにあるサイトだけでも かなり勉強になるとは思うがどうでしょ 上達するためには 書く→うまくいった気になる→調子にのる→ →思わぬ穴が見つかる→痛い目を見る→書く を続けないとなんとも
数をこなす以外にないよ
27 :
Name_Not_Found :2011/01/19(水) 21:16:33 ID:LI5o/N0R
28 :
Name_Not_Found :2011/01/19(水) 21:20:11 ID:LI5o/N0R
あ、スクロールバー出てしまった。おとなしく数こなす事にします。
29 :
Name_Not_Found :2011/01/19(水) 21:34:21 ID:BdpEnohD
googleはけっこう標準外多いからあんま参考にしない方がいいよ
31 :
Name_Not_Found :2011/01/19(水) 22:13:40 ID:LI5o/N0R
32 :
Name_Not_Found :2011/01/19(水) 22:51:59 ID:LI5o/N0R
ちょっと小耳に挟んだんですがprototype.jsやjQueryのライブラリそのものを読むと結構いいみたいですね。 長くなったのでこの辺で終わります。
34 :
Name_Not_Found :2011/01/20(木) 11:40:02 ID:zmiDAdLP
>>34 Webでの閲覧ではなく、ドキュメンテーションをダウンロードしたいのです
PHPやperlをやられているか分かりませんが、基本的にLAMP系はドキュメンテーションをダウンロードできます
ネットに繋がっていなかったり、外出時などのオフライン環境時にAPI等の確認をしたいのです
気になってがんばって読んでみた WebSocketsの欠陥というよりプロキシの欠陥じゃないか ソケットで自由にデータを送れると欠陥プロキシのキャッシュを汚染できると・・・ 同様にソケットで自由にデータを送れるFlashやJavaでもキャッシュを汚染を引き起こせると それで欠陥プロキシを通しても問題ないようにWebSocketsの仕様を変更しようってことか まぁそれはいいけどFlashとかJavaでできるんならWebSocketsだけ封印してもあんまり意味ないんじゃ 欠陥プロキシの方を直さなきゃ
37 :
Name_Not_Found :2011/01/20(木) 12:08:07 ID:zmiDAdLP
>>35 あー。さらっとはみつからんね。
ページ保存しちゃえば?
javascriptであいまい検索用の文字列を生成したいんですけどわかりません。 2chを検索したい時、 2ch 2ch 2ch 2ch とか、全半かなカナのパターンをリストに出したいのです。
検索対象を揃えたほうがいいんじゃないの
cが全角でhが半角のパターン、とかやってたらとんでもないから
何をしたいのかわからないけど
>>41 のやりかたでも目的が達成されるのなら
>>41 のアプローチが妥当だと思う
>>41 おっしゃる意味が良くわかりません
>>42 そのとんでもない事を手動でやるのは大変なので、自動化したいんです
英数文字分の正規表現を文字毎に用意して、 それを組み立てて検索するとか。 chre = [ '(a|A|a|A)', '(b|B|b|B)', … ]; sstr = '2ch'; sre = ''; for ( i = 0; i < search.length(); ++i ) { ch = search.charCodeAt(i); sre += chre[i-0x41]; // ← この辺は適宜よろしく } sre = new RegExp(sre);
45 :
44 :2011/01/20(木) 17:23:15 ID:???
あー、推敲してたら変数名がおかしいな。 意図は汲んでくれw
たまにみる『i-0x41』こういう計算ってなんて検索すれば良いの? メカニズムが知りたい
>>43 長さ20文字あったら、半角全角の組み合わせは百万通りあるんだが、
百万回検索するつもりかい?何日掛かるかねえ。ずっと待つの?
>>46 'A'の文字コードが0x41。
>>44 の例はアルファベットのみを想定してるけど、
他のアスキー文字の全角/半角も覚えておくならまた別の値になる。
ダミーを加えて、文字コードそのままをインデックスにしちゃってもいい。
>>47 それが問題なんだよねー
でも、その時はそれをやんなきゃならない
手動ならほんと何日かかるんだろうね?
すでにたくさん突っ込みが入っているけど 設計を改めるレベル 最終的に 生成した文字列をどうしたいのか 知りたい
>>50 いずれは改めるんだろうけど、すぐには動かないから
ついでにjavascriptの勉強がてら作れたらいいなと
>>48 Aなら0、Bなら1が導けるのか
勉強になった。サンクス
>>52 検索相手側の文字列が取得できるなら、「検索文字列も相手側も
半角に揃えてから比較」で1回で済むわけで、皆それを勧めている
わけよ。百万回と1回じゃ桁違いすぎでしょ?
で、検索相手側に手が出せない場合でも、正規表現が使えるなら
すべての文字を「全角または半角」というパターンに取り替えて
正規表現検索してもいい。これでも1回。
>>55 取得できないんです
正規表現も使えないんです
IEではクロージャを使用するとメモリリークを起こすようですが(IE8等は分かりませんが)、jQueryは基本的にクロージャを使う構文が多いですが、 この場合メモリリークは起きないのでしょうか?
>>56 検索システムとかに何億通りかのリクエストを送りたいってことか?
>>56 >>58 結論として「迷惑だからそんなことをしてはいけない。あきらめるべき」
というところかな。岡崎図書館事件て知ってるよね。逮捕されないようにね。
>>57 なんと言う拙速な理解。クロージャが全部リークするわけじゃないだろ。
そこがきちんと読み取れないのならWeb開発する資格ないと思うが。
<a href="#abc">abc</a>のようにハッシュと中のテキストが同じというリンクが1000個以上あるhtmlがあります。 これをいちいち上記のように書くのが面倒なので、html上では<a>abc</a>とだけして、javascriptで以下のようにしました。 var a = document.getElementsByTagName('a'); for (var lp = 0; lp < a.length; lp++) { if (a[lp].href == '') {a[lp].setAttribute('href','#' + (a[lp].innerText || a[lp].textContent));} } FirefoxやOperaだとそれほどでもないのですが、ie6だとすっごく遅いです。 どうにか高速化できないでしょうか? なるべくならie6を窓から投げたくありません。
IE6を切り捨てないなんて許さない
本当に面倒だという理由なら、エディタの検索・置き換えで保存してアップしたほうが良いよ 正規表現使えば一瞬だよ 控えめなjavascriptにもなるし
65 :
Name_Not_Found :2011/01/21(金) 20:07:23 ID:OGUASIjZ
すこーーーーーしだけ速くしてみた var a = document.getElementsByTagName('a'); for(var i=0,l=a.length ; i<l ; i++){ if(!a[i].href) a.href = "#" + a.innerHTML; }
>>62 JavaScriptじゃなくてテキストエディタの正規表現で一括置換するのがスマートだと思う。
67 :
>>62 :2011/01/21(金) 20:30:24 ID:???
皆さんありがとうございました。
>>64 ,66
そうだよね、javascriptであれやこれやより正規表現でずばっと書き換えたほうがいいですよね。
なんで気が付かなかったんだ自分……
>>65 うん、ほんとにすこーーーーーしだけ早くなったような気がするw
こっちの書き方のほうがスマートだし。以後の参考にします。
68 :
Name_Not_Found :2011/01/21(金) 21:54:29 ID:S9Xg5H2O
どっちみちハッシュならaタグのクリックイベント拾って処理する方法でやった方が楽かな。 リンクないのにaタグなのも気持ち悪いからspanタグとかにしちゃうけど。
スクリプトを終了する命令ってありますか? 処理途中で出したダイアログで、ユーザが「OK」でなく「キャンセル」選んだら そこで処理を終える、みたいな。 exitとかquitとかいう命令は無いみたいだし、gotoで最後の方に飛ぶとかもできないっぽい。 でっかくifで括るのも見づらいし。
return;
>>69 エラーを発生させて良いなら、throw new Error('処理は中断されました');
エラーにしたくないなら、>70が指摘したように関数内で return するしかないだろうね。
>>68 いっそBODYのonclickだけでどうだろうか
return といえば以下の return this; がよくわからないのですが、 Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; // ? }; ここから以下のようにしたとき、 Number.method('integer', function () { return Math[this < 0 ? 'ceil' : 'floor'](this); }); return this; はこんな感じで返るもの、と理解してよいのでしょうか? Number.integer() {return Math[this < 0 ? 'ceil' : 'floor'](this);};
thisはarguments.calleeではなく、Number自体を返すので、繋げられる。 Number.method('integer', function () { return Math[this < 0 ? 'ceil' : 'floor'](this); }).method(〜).method(〜);
>>62 for (var i = 0, a = document.getElementsByTagName("a"), l = a.length; i < l; i++) {
if (!a[i].getAttribute("href")) a[i].setAttribute("href", "#" + a[i].firstChild.nodeValue);
}
>>65 より1-3%だけ早くなったw
実測してないけど。 var a = document.getElementsByTagName('a'), l = a.length, node; while (l--) { node = a[l]; if (!node.href) { node.href = '#' + node.firstChild.nodeValue; } }
ajax使ってPHPの処理を実行させた場合、 その結果を返す場合のPHP側の処理としては、 echoでメッセージを出せば、そのデータが結果として返されるんですか? phpかこっちかどっちに質問したらよかったのかわからなかったので、 こっちにしてみましtあ。
もういいです
79 :
>>62 :2011/01/22(土) 19:18:53 ID:???
たくさん例を出していただいてびっくり。改めて自分で実行速度を計ってみた。
以下だいたいの平均値。ブラウザはie6、置き換えるaタグは1000件超。
>>62 (元の質問のやつ):約1秒
>>65 :約0.4〜0.5秒
>>75 :約0.1〜0.3秒
>>76 :約0.3〜0.5秒
>>75 ,76はそのままでは動かなかったので、
getAttribute("href")に,2をつけて、firstChild.nodeValueをinnerTextに変えた。
しかしこんなにいっぱい書き方あるんだなー。勉強になる。
>>68 ,67
event.srcElement(event.target)で、最初の質問の望みどおりになった!
ありがとー
Opera限定なんですが、Operaのユーザスクリプトにて、 domにアクセスしようとしてできないページがあります。 今のところ、iframeを使ったページが怪しい感じですが、 これ何とかなりますか?
getElementsByTagName で取得できる nodelist は live だから ループ回す前に配列に変換したほうが速いんじゃないか
━━━本スレに書く事を許される者は以下の通り━━━━━ 一、質問を分かる日本語できちんと説明できる者 一、トラブルを再現する最小限のサンプルを貼れる者
すいません、自己解決しました
ajaxでcsvデータを読み込み、作られたテーブルから情報を取得しようとしています。 しかしテーブル作成後、例えばgetElementsByTagName('"td")などとしても、中身は空っぽです。 通常のDOM操作をするにはどうしたらいいでしょうか。 function createXMLHttpRequest(func) { var result = null ; try { result = new XMLHttpRequest() ; } catch (e) {try { result = new ActiveXObject("Msxml2.XMLHTTP") ; } catch (e) {try { result = new ActiveXObject("Microsoft.XMLHTTP") ; } catch (e) { return null ; } } } if (result) result.onreadystatechange = func ; return result ; } function makeTable() { if (httpObj.readyState == 4) { var data = httpObj.responseText.split("\n") ; result = "" ; for (i = 0; i < data.length; ++i) result += '<tr><td>'+data[i].replace(/,/g, '</td><td>')+'</td></tr>' ; document.body.innerHTML = '<table>'+result+'</table>' ; } } window.onload = function() { httpObj = createXMLHttpRequest(makeTable) ; httpObj.open("GET", "./data.csv", true) ; httpObj.send("") ; var test = document.getElementsByTagName("td") alert(test.length) // 0が返る }
openの第三引数をfalse(同期)にする、もしくはテーブル作成を待ってgetElementsByTagNameを実行
[123] [456] [789] と言う文字列があって、これらを 147 148 149 ・・・ 全てのパターンを書き出すにはどうしたらいいでしょうか?
>>91 普通に多重ループすればいいだけだろこのゴミ野郎
93 :
Name_Not_Found :2011/01/24(月) 10:36:53 ID:PiwbQcfh
>91 string.replace(pattern,callback);
for使え
96 :
Name_Not_Found :2011/01/24(月) 12:13:04 ID:TKRYb6M8
forループ3つ重ねてやれば、まあ出来るんだろうけど 出力される数値は確定しているんだから n = [147,148,149,157,158,159…369]; ってしたほうがいい気がする。
拡張性考えろや馬鹿か
いやむしろ
>>91 のお勉強という意味でループ使わせた方がいい
質問です。 A.html内にiframeが配置されていて、そのiframeにはB.htmlが読み込まれています。 2回目の訪問(あるいはリロード)の際には、iframeの中をC.htmlに、 3回目の訪問(あるいはリロード)の際には、iframeの中をD.htmlに、 で、n回目の訪問の際には、iframeの中をA.htmlに戻したいです。 こういうことをJavaScriptでやろうと思った場合、Cookieを使う以外に手段はないでしょうか?
>>96 あ、数値は確定されてません。
あと、桁も揃ってません
for(i=0;i<x.length;i++){ for(j=0;j<y.length;j++){ for(k=0;k<z.length;k++){ いまいちわかりません } } }
>>99 そりゃjavascriptで状態を保存しておく方法はCookieしか無いからな
phpなりcgiなりも使っていいなら鯖側に保存する方法も使えるが、なんか無駄すぎるな
なんでCookie使いたくないの?
>>99 cookieを使わないなら、javascriptがどうやってn回目だとわかる?
>>100 正規表現でやったら?
>>102-104 レスありがとうございます。
Cookieに抵抗があるとかそういうわけではなくて、
自分の知識の範囲ではCookieを使うくらいしか思いつかなかったんですけど、
詳しい方ならもしかして別の方法とかを知っていたりするのかなと思いまして、
もしそういうのがあれば参考にさせて貰いたいな、程度の質問でした。
お騒がせしました、Cookieでやってみます。
>>104 すいません
正規表現よくわからないんです
わからないことは仕方ないことだけど自分でどこまでやったか詳しい情報書かないとみんな答えようがないだろう
String(x)[i] + String(y)[j] + String(z)[k] でできる?
>>106 <textarea cols="60" rows="20" id="text">
[123]テスト
テテト[456]
テ[789]テ[206]ト
</textarea><br />
<input type="text" id="start" value="100" /><br />
<input type="button" value="test" onclick="test()" />
<script type="text/javascript">
function test(){
start=document.getElementById('start').value;
if(start.match(/\d+/)){
var text=document.getElementById('text');
text.value=text.value.replace(/\[\d+\]/g,change);
}
}
function change(rslt){
return rslt.replace(/(\[)\d+(\])/,"$1"+(start++)+"$2");
}
</script>
>>106-110 やっぱり再帰を使って何個でも大丈夫にした方がいいのでは。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<title>sample</title>
<div><script type="text/javascript">
function comp(s, a, n) {
if(n >= a.length) {
document.write(' ' + s);
} else {
var t = a[n];
for(var i = 0; i < t.length; ++i) { comp(s + t.charAt(i), a, n+1); }
}
}
comp('', ['123','456','789'], 0);
</script></div>
</body></html>
>>105 localStorageは?
あとはflash使って保存。
114 :
89 :2011/01/24(月) 18:31:15 ID:???
115 :
Name_Not_Found :2011/01/24(月) 20:56:39 ID:XIclonmr
ラーメンマンは中国人ですか?
116 :
Name_Not_Found :2011/01/24(月) 21:35:23 ID:DEE0z+M9
いいえ、ケフィアです。
クリックした位置の要素上のY座標(要素の上端を0とする座標)の値を取得するにはどうやったらいいですか? IEだとevent.offsetYで簡単に取得できるのですが、Firefoxではどうやればいいのか分かりません。
<script type="text/javascript"> function offset(event){ eventOffset=getOffset(event); offsetX=eventOffset.offsetX; offsetY=eventOffset.offsetY; alert([offsetX,offsetY]) } function getOffset(event){ var target=event.target; if(target.offsetLeft==undefined)target=target.parentNode; var pageCoord=getCoord(target); var eventCoord={x:window.pageXOffset+event.clientX,y:window.pageYOffset+event.clientY}; var offset={offsetX:eventCoord.x-pageCoord.x,offsetY:eventCoord.y-pageCoord.y}; return offset; } function getCoord(element){ var coord={x:0,y:0}; while(element){ coord.x+=element.offsetLeft; coord.y+=element.offsetTop; element=element.offsetParent; } return coord; } </script> <div><textarea style="width: 200px" cols="0" rows="0"></textarea><label onclick="offset(event)">Offset</label></div>
120 :
117 :2011/01/25(火) 06:51:55 ID:???
>>118 ありがとうございます。
ただ、clientYだと要素の外の長さも含めた大きな値が返ってくるような...
>>119 の内容は複雑すぎるので、時間をかけて調べてみます。
jQueryを使いスライドパネルを作っているのですが $(function(){ $(".open").click(function(){ $("#loadsome").slideToggle("normal").load("./hogehoge/hogehoge.html"); }); }); としたときに,.openをクリックしても一回でスライドせず,ダブルクリックが必要になってしまいます どうやら最初のクリックでロードだけしているようで,一度ロードした後なら.openはワンクリックで開いたり閉じたりするようになります .slideToggleと.loadを入れ変えても,#loadsomeではなく別のdivをloadさせてもどうしてもダブルクリックが必要になります slidetoggleを外しアコーディオンっぽい挙動を諦めればワンクリックで済むようなのですが,どなたか対処法を御教授して頂けないでしょうか
>>121 要はloadし終わってからslideToglleを実行しなくちゃ行けないわけだから
.loadの第2引数にコールバック関数を指定してその中でslideToggleを行うべきだよね
2回目以降は#loadsomeの有無で.loadを使わないようにして。
と思ったんだけど、始めにloadsomeが非表示になってないってオチはないよね? 始めの1回目のクリックが表示→非表示のtoggleが行われてるだけだとか
if($("#loadsome").is(":empty")){ $("#loadsome").load("./hogehoge/hogehoge.html",function(){ $("#loadsome").slideToggle("normal"); }); }else{ $("#loadsome").slideToggle("normal"); } まちがってるかもしれないけどこんな感じ?
126 :
89 :2011/01/25(火) 18:46:02 ID:???
また引っかかった…… ajaxでcsvを読み込み、表にしました。 IEやOperaは正常に表示されますが、FireFoxでエラーが出てしまいます。 内容はこんな感じです。 // 構文エラーです。 (csvファイルのフルパス) 行:1 abc,abc,abc ↑(緑の矢印、カンマの所を指している) 文字コード関連の問題と思い、csvをutf-8、改行コードをCRに直して(splitの区切りも\rに)保存しましたが、駄目でした。
>>126 試してみたいから再現するようなcsvの疑似データちょうだい
128 :
89 :2011/01/25(火) 21:23:38 ID:???
あ、すみません。33行目のtrueはfalseですね。
130 :
117 :2011/01/25(火) 22:20:22 ID:???
>>119 は、てっきり余分なコードも入っているサンプル例なのかと思っていたのですが・・・
Firefoxでは、IEで event.offsetY と書くだけで返ってくる値を知るために、
これだけ長い行のコードを書いてループ処理で計算させないと求めることが出来ないんですね。
_| ̄|○
>>128 Fx 3.6.13 で試したが、エラーはなかった。
ただし、改行コードが CR になっているので一行のテーブルになる。
split('\n') を split('\r') に直せばいいわけだが、どうせなら一通り対応した方がいいと思う。
dataArray = httpObj.responseText.split(/\r\n|[\r\n]/);
>>128 httpObj をグローバル変数にしているのはリークパターンを防ぐためか…。
> 文字コード関連の問題と思い、csvをutf-8、改行コードをCRに直して(splitの区切りも\rに)保存しましたが、駄目でした。
素朴な疑問なんだが、CR にするのは何故?
普通は互換性を考えて CR + LF にすると思っていたんだが…。
133 :
89 :2011/01/25(火) 23:08:01 ID:???
>>131-132 ありがとうございます。
改行コードですが、普段はCRLFを使っています。
文字コード関連のエラーを疑っていたのと、
サンプルサイトでCR(LF)を使っているところを見たので、試してみた次第です。
そっか、CRLFのままでいいのか。
で、csvとhtmlの改行コードをCRLFに戻し、splitの区切り文字も
>>131 さんのように書き換え、
httpObj.openのfalseをtrueに戻したところ、IE、Opera、FireFox(自分の環境は3.6.3)すべてでうまく動きました。
ただし相変わらず構文エラーは出たままですが……動くのでいいのかな?
とにかく回答くださった皆さん、本当にありがとうございました。
function hoge_class() { } hoge_class.prototype.get_a = function() { return "a"; } hoge_class.prototype.get = function() { return this.get_a(); //! } !の部分がコンパイルが通らず困っています. メソッド内でメソッドを呼び出すことは出来ないでしょうか? (理解が乏しいので,説明も乏しいです..申し訳ありません..
>>134 var hoge = new hoge_class();
hoge.get(); // "a"
エラーにならないと思うよ?
ありがとうございます. どうやら自分が思っていたのと原因が違うようです. 分析し直して,改めてご質問させて頂きます.
>>89 です。
よく考えたら、openがtrueだとgetElementsbyTagNameが通らないんだったorz
[エラーまとめ]
IE,Opera
httpObj.openがtrue→表は表示されるが、DOMが通らない
httpObj.openがfalse→表もDOMもOK
FireFox
httpObj.openがtrue→表は表示されるが、DOMが通らない
httpObj.openがfalse→表が表示されない、csvが構文エラー
ごめんなさい!trueのまま、setTimeout関数で少し処理を遅らせればいいことに気づきました。
>>90 さんに指摘もらってるのにorz
何度も何度も申し訳ありませんでした。あせりすぎた……
予約語回避ってみんなどうやってるの?俺は初級者だがたまーにやってしまう 全部覚えてるのが普通?
スレチっつーかイタチやね
予約語くらい覚えとけ
俺もよーやく覚えたよ
開発環境使ってたら例えば変数に予約語使ったとたんに警告される
そういや色変わるしな
function foo_class() { this.obj = new bar_class(); } foo_class.prototype.method_a() { this.obj.update(); //!updateは未定義と指摘されます } foo_class.prototype.method_b() { ( new bar_class() ).update(); //問題ありません } method_bの例から,updateは確かに定義できていると思うのですが, method_aで未定義と指摘されないためには,どうすれば良いでしょうか?
>>147 method_a, method_b ともに定義できていない。
>>136 を参考に修正すべし。
>>122-125 ありがとうございます
自分の技術ではやはり上手く行かず,結局スライドパネルではなくアコーディオンでやることにしました
ご協力感謝します
>>148 foo_class.prototype.method_a = function()
{
this.obj.update(); //!updateは未定義と指摘されます
}
foo_class.prototype.method_b = function()
{
( new bar_class() ).update(); //問題ありません
}
の間違いですね.失礼しました.
未定義と指摘されるのは変わりないので,具体的な方策を教えて頂けると助かります.
>>150 「未定義と指摘されるのは変わりない」といわれても、bar_class のコードもないわけだし検証しようがない。
書いていないコードに問題があるのでは?
>>151 method_bで未定義と出ない点で,this.objに問題があるかと思ったのですが...?
>>152 後からコードを付け足すなら、エラーが再現されることまで確認してから付け足してくれ。
>>153 , 154, 155
初心者いじめカッコワルイ
同じ種類の人間だと思われたくない・・・スレから出てってくれまいか?
じゃあ回答はカッコイイ
>>156 に全て任せよう。頼んだぞ。
ここで
>>152 に沿う回答ができたらヒーローだな。
正直、俺はわからないので
>>156 に期待している。
どうでもいいけど火山が怖い
>>156 >>1 一、トラブルを再現する最小限のサンプルを貼れる者
それが守れないのならこのスレに来ないで欲しいというだけで。
回答しようとした人のとこで動かないとか再現しない不完全な
コード貼られてもこういう言い合いになるだけだから無意味なんだよね。
>>150 もっかい「そのままそっくり貼ったらエラー出る」コード出して欲しい。
一式揃ってないと回答者の側でつぎはぎしたときに食い違うから。
all=getElementsByTagNameでタグの要素の配列を取得すると思うのですが。 for(tag in all){ tag.nodeValue; } にしても、サポートされてない操作ですとでます。 for in は使えないのでしょうか?
いいえ
すみません、サイ本の第5版を持っている方にお聞きします P518の例20-7なんですが、この中にあるoptions.timeoutとかoptions.progressHandlerとは何なのでしょうか? 急に出てきたようなので分かりません このようなプロパティはあるのでしょうか?
165 :
Name_Not_Found :2011/01/27(木) 11:23:08 ID:lzAjCz8O
>>162 タグの要素とかイミフだけど
var elems = document.getElementsByTagName("hoge");
for (var i = 0, len = elemes.length; i < len; i++) {
var tag = elems[i];
tag.nodeValue;
}
でできる。配列(的なオブジェクト)をfor inで走査するのはオススメできない
>>166 ありがとうございました。for in は全ての配列で使えるわけではないんですね。
xmlhttprequest?ってやつで、ネット上のXMLデータを取得したいんだが、 IEではreadyStateとstatusプロパティの値は正常なのに、、 chromeとfirefoxではstatusプロパティが0なんだ。 0なんてエラーはどこにも載ってないから困ってるんだが、 何か原因として考えられることってありますか?
>>117 >>130 function(e){
var r,offsetX,offsetY;
r=((e=e||event).target||e.srcElement).getBoundingClientRect();
offsetX=e.clientX-r.left;
offsetY=e.clientY-r.top;
}
172 :
117 :2011/01/27(木) 20:50:59 ID:???
>>171 ありがとうございます。
簡潔に書くのは無理かとあきらめてました。
>>168 再現可能なコードを出してもらわないとわからない。
>>164 options は引数にある。
HTTP.get = function (url, callback, options) {
options.timeout, options.progressHandler はスクリプト制作者が任意に設定したオブジェクトだから、名前は任意でいいと思う。
下のHTML+JavaScriptで文字にマウスを移動するとテーブルがでる。ここまではOK。 けどそのテーブルの文字選択ができない。ずっと解決方法が分からない。わかる方いませんか? ブラウザはChrome8.0.55・・・ <body><div id='o'onMouseOver='_a()'>ああああいいいいううううええええおおおお</div> </body> <script type="text/javascript"> function _a(){o.innerHTML="<table border=1 cellspacing=0><tr><td>select</td></tr></table>";} </script>
>>175 table を範囲選択するときにも onmouseover が発火してる。
innerHTML 後にonmouseoverイベントハンドラを削除してやればいい。
<div id='o' onMouseOver='_a(); this.onmouseover = null;'>ああああいいいいううううええええおおおお</div>
177 :
175 :2011/01/27(木) 21:55:59 ID:???
さすが!原因と対策が分かったので実コードにも使えそうです。ありがとうございます。
178 :
175 :2011/01/27(木) 23:02:05 ID:???
問題は解決した。しかし発火といえるほどonmouseover出てたのはなぜなんでしょ?入るとき1回じゃないの?ブラウザバグ?
>>178 イベントバブリングでぐぐってください。
180 :
175 :2011/01/27(木) 23:41:29 ID:???
ヒントありがとうございます。ググって着ましたが少し難しいですね。勉強してきます。
181 :
Name_Not_Found :2011/01/28(金) 05:54:34 ID:c1Ys/Ber
183 :
Name_Not_Found :2011/01/28(金) 07:22:52 ID:7cLOjvAm
関数内でscriptタグを生成し、読み込みを確認した上で返したいのですがうまくいきません。 foo.load = function(service) { // scriptタグ生成 var scriptElement = document.createElement("script"); scriptElement.type = "text/javascript"; scriptElement.src = "service + ".js"; document.getElementsByTagName("head")[0].appendChild(scriptElement); // 待ち(読み込みスクリプトで定義されている名前空間用のオブジェクトを参照) while (window["foo"][service] === undefined) { // alert(window["foo"][service]); } return; } foo.load("search"); これは無限ループになります。ですがコメントアウトしてるalertを実行すると (1回目)=>undefined (2回目)=>object などとなってループを抜けます(正常動作)。 上のコードでは一度参照したwindow["foo"][service]の内容が書き換わらないが alertでは常に最新の値を取得してるのではないかと考えてるのですが、 ループ内であれこれ試しても解決できません。 どうすればいいでしょうか。
>>183 JavaScriptではいちど実行を放棄しない限り他のスレッド(読み込みとか)
が動かないから無限ループで待つ方法では絶対不可能。alert()が嫌なら
setTimeoutとかで待つしかない。だから1つの関数の中で「読み込みを
確認してから帰る」というのは不可能。setTimeoutの勉強を勧める。
>>181 以下は大丈夫ですか
>>1 一、JavaScriptはJavaとは別物であると知っている者
186 :
183 :2011/01/28(金) 17:22:41 ID:???
>>184 たいへん参考になりました。
タイマーを使ってチェックする方法は別に書いていたのですが、
どうも前後のコード(プログラムを使う人がコーディングする部分)との兼ね合いで
すっきりしなかったもので、こっそりループして待つ方法を試していたところでした。
今は読み込みタイミングを工夫してイベントとタイマーで待つ方法に修正したところです。
ありがとうございました!
addEventListenerに対応しているかどうかとかは if(document.addEventListener){} else if(document.attachEvent){} else{} みたいにしますが さらに特定のイベントタイプに対応しているかどうかを判断するにはどうすればいいですか?
対応してるか否かに関わらずどんな名前でも(自分で)イベント投げられるから無いと思うよ
document.createEventでイベント作れるしなー
そうなんですか どうもありがとうございますm(_ _)m
$(function(){ $("#markerset").submit(function(){ createMarker(); return false; }); }); function createMarker(){ var lat = (map.getCenter()).lat(); var lng = (map.getCenter()).lng(); var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat,lng), map: map, title: "指定位置でドロップ", draggable: true //なんかV3での動作が超遅いきがする }); google.maps.event.addListener(marker,'mouseup',function(){ echoPoint(marker.position); }); google.maps.event.addListener(map,'dblclick',function(event){ marker.setPosition(event.latLng); echoPoint(marker.position); }); return marker; } function echoPoint(point){ var lat = point.lat(); var lng = point.lng(); $("#marker_lat").val(lat); $("#marker_lng").val(lng); } ボタンに関数設定したけど呼び出せません。。。ほわい?
━━━本スレに書く事を許される者は以下の通り━━━━━ 一、トラブルを再現する最小限のサンプルを貼れる者
javascriptで動的に作成したarrayをformでpostするにはどうやるのが一番ふつうなんでしょうか?
サーバーサイドがPHPなら[]で <input name="test[]" value="aaa" /> <input name="test[]" value="bbb" /> <input name="test[]" value="ccc" /> var_dump($_POST["test"]) // = array("aaa", "bbb", "ccc");
そうか!サーバーサイドによってやり方が変わるんですね サーバー側はpythonです
jQueryのajaxも配列をname[] 形式で送るしそれでいいんじゃね。 pythonには自動的に配列にする機能はないから自前で処理する必要があるね。
200 :
Name_Not_Found :2011/01/30(日) 08:27:41 ID:ytGkNMSf
Ajaxのonreadystatechangeとopen
って記述する順番ってどっちが正しいんでしょうか?
(実行される順番ではなく)
--------onreadystatechangeが前?-----------------
aj.onreadystatechange = function(){};
aj.open(method, url, bool);
aj.send(null);
--------onreadystatechangeが後?-----------------
aj.open(method, url, bool);
aj.onreadystatechange = function(){};
aj.send(null);
onreadystatechangeが前派なサイト例
http://blog.wonder-boys.net/?p=281 onreadystatechangeが後派なサイト例
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0012 大変お手数ですがご回答をよろしくお願いいたします。
sendの前に書けばどっちでもいい。 好みの問題
>>202 その2つの記述じゃイベントの動作仕様が微妙に違うからなんだよね。
前者だとMdown関数の中で、return false;とすれば既定のイベントはすべてキャンセルされるんだけど、
後者だとそれだけじゃダメで、下記の記述も必要になる。
e.preventDefault();
e.returnValue = false;
e.cancelBubble = true;
>>203 e.cancelBubble は明らかに違うのでは…。
バブリングをキャンセルする必要はないと思う。
>>203 解決しました。
ありがとうございます。
<html>
<head><title>test</title>
<script type="text/javascript">
<!--
function url1(){
window.open("
http://google.co.jp/ ")
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
setTimeout("url1()",3000)
setTimeout("url1().close()",5000) //←ここがわからない
</script>
</body>
</html>
3秒立ってからページを開いて、5秒後に開いたページを閉じる。ってのをやりたいんですが調べてもよくわかりません
ちょっとスレチかもしれませんが 技術評論社のjavascript超入門って本がだいたい終わったので 次にjavascriptの本を買おうと思うのですが なにかおすすめはありますか?
サイ本
a==b と a===b では、どちらの方が負荷が少ないでしょうか
そんな無意味なことで高速化しようと思ってるならハゲろ 育毛剤買いに行く時間でロジックの見直しでもしてろ
214 :
Name_Not_Found :2011/01/31(月) 07:07:28 ID:wqHESTql
>>213 育毛剤は禿げてからじゃ遅いんだ!
もう…手遅れなんだよ…
演算子の意味が分かっているなら自明のはず
216 :
Name_Not_Found :2011/01/31(月) 08:36:26 ID:tn8G3+zJ
すいません javascript で、文字化けします。 <SCRIPT language="JavaScript"> <!-- document.write("譁?ュ怜喧縺"); //--> </SCRIPT> 文字化け部分は、日本語を書いています 環境 os macOS version 10.6.4 ブラウザ safari か google crome エディタ テキストエディタ どうしたらなおるでしょうか?
>>212 >>215 ==の比較処理で、内部で事前に型変換をやっているかによるなあ。力不足でわからん。
>>216 テキストエンコーディングの指定を変更しても直らない?
>>216 保存時に正しいコードで保存してても、開くときはエディタが中身を見て文字コード解析するから
あんまり短いソースとかだと読み違えることがあるが、実用上は問題ない。
開くときに化けるのは、エディタ側でコード指定して開きなおす必要がある。
219 :
218 :2011/01/31(月) 10:08:32 ID:???
すまん、ブラウザで化けるんだよな。それはHTMLのエンコード指定だろうなあ。 保存時の文字コード、HTMLでのエンコード指定、ブラウザの解釈、を確認しよう。 ちなみにcrome→chromeね
220 :
216 :2011/01/31(月) 10:50:34 ID:tn8G3+zJ
>217テキストエンコーディングを、Shift_JISにしたら、なおりました。ありがとうございました(´∀`) >218保存時の文字コード、HTMLでのエンコード指定、ブラウザの解釈 UST8から、Shift-Jisに変更したら、okでした。ブラウザは、safari とchrome(勉強になりました)の、両方okです。 ありがとうございました。
JavaScript関係ないしマカーだからでいいよ
>>220 UST8じゃなくUTF-8な。
横文字に弱そうだな。
USO8百な。
>>224 数値比較の場合は、差は無いんですね。
== の場合でも型は揃えてから比較した方が速いとかいろいろ勉強になります。
こういうのは実際に自分でテストして試したほうが身になるよ。 ネットに書かれてるからと妄信する新人PGが多くて困る。
>>226 どうやって自分でテストすんの。値が微妙すぎてテストだと誤差が多いだろうから
ECMAを参考にした方が間違いは少ないと思うぞ。
>>227 ==と===の比較を10億回ほどループさせれば、Core i7でも400ミリ秒くらい違ってくるよ。
ベンチマークの話題するときはベンチマークのコードを出しましょうね
どんだけ他力本願なの(笑)
他力本願とかそういう話じゃないだろ プログラマーの一般常識 コードに不備があって結局は変わらないことが証明されたり そういう話をするためにも必要
そんなくだらないことで揉めてる時間があったらカツラでも買ってこい
ベンチマーケティングですねわかります
234 :
Name_Not_Found :2011/02/01(火) 03:52:10 ID:57px5ypG
ヅラはやっぱ縫込みがいいのかなー
最近の処理系だと10億回もループ回すとJITされて ==も===も同じコードにされてベンチマークの意味なくなっちゃうかもよ
憶測ですねわかります
237 :
Name_Not_Found :2011/02/01(火) 10:46:05 ID:jcBMwG4X
>>232 被るか被らないかは、転職や結婚くらい重大な問題なんだよ!!
簡単に口にするんじゃねえよ…簡単に…
238 :
Name_Not_Found :2011/02/01(火) 11:16:03 ID:r2uTNUKw
239 :
Name_Not_Found :2011/02/01(火) 17:42:54 ID:sIYoQUUd
$(document).ready(function(){ $('div').hide(); $('div:first').show(); }); firefoxだけ最初の一回hide()に失敗するんだけど何でやろCSSでdisplaynoneしとくと消えてるしリロードするとちゃんとできる あとこういう書き方見たんだけどこうしたほうが正しいの? var divs = $('div'); divs.hide().filter(':first').show();
レンタルサーバにあげてdivのなかにいろいろ読み込むと失敗するんよ 重い画像で引っかかるとスキップされるとかなんかあるのかしら
>>241 レンタルサーバにあげてdivのなかにいろいろ読み込んでるせいでしょ
それこそonloadでいいんじゃね。
正規表現の()←このかっこの意味を詳しく教えてください。 この括弧でくくったなかの正規表現にマッチしたものを、 配列に格納するという意味しかないんですか? それともほかになにか意味がありますか?
>>244 括弧で括ると、グループ化できる。
alert(/^(abc)+$/.test('abcabcabc')); // true
グループ化するだけならキャプチャしない方が良い。
alert(/^(?:abc)+$/.test('abcabcabc')); // true
グループ化っていうのは、()内の文字列はこの条件、ってまとめて指定できるってことでいいですか? もしその場合、()内に?とか$の文字が入っていた場合はエスケープ文字を付加する必要ありますか?
JavaScript関係ないし
いつも思うんだけど > 一、正しい(validな)HTMLとは何か知っており書ける者 これ、完璧にって言うと結構レベル高いよね。 知ってはいても完璧に実践するのは非常に手間だし 間違いやすい・微妙すぎる決まりもある。 HTMLだけでも大変だし、CSSとなると… 無視されてるっぽいからどうでもいいのかもしれないけど。
strictじゃなくてvalidだから
validが何か知らないとなるとますますこのスレは無理では…
バリデータ使えばいいし
だが断る
> ━━━本スレに書く事を許される者は以下の通り━━━━━ > 一、自ら学んでJavaScriptコードを書く意思を持つ者 じゃあ、さようなら。
$
あ、なるほどwありがとうございましたw
何回もすみません。 /(https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/g この正規表現で、.とか?とかって正規表現で使うメタ文字ですよね? なんでスラッシュとかはエスケープ文字(\)をつけてエスケープしてるのに、 このメタ文字はエスケープしなくてよいのでしょうか? エスケープしないと文字として認識してくれないと思うのですが、どうなのでしょうか? それと、replace関数についてですが、 ここでのgオプションについては、 マッチしたら都度、第二引数の変換を行うという認識でいいでしょうか? 例えば、文字列の中で4つマッチしたとしたら、 一つずつ、第二引数の変換処理が行われていくという感じだと思うのですがどうでしょう? 何度もすみませんがお願い致します。
はい
えっと、両方とも僕の認識であってるということですかね。 ありがとうございました。
265 :
Name_Not_Found :2011/02/02(水) 14:00:10 ID:JaFitnud
>>262 /[.]*/.test("hello"); // false
/.*/.test("hello"); // true
そういうこと
フレームワークのHTMLページを作ってるのですが ボタンをクリックするというか、onclickで下にある別のフレームを表示、非表示とかって出来ますでしょうか?
できますよ
マジですか!? DOM操作でやればいいのでしょうか? そのHTMLの中にあるインラインフレームとかだったら、外のHTMLにそういうボタンを作って フレームの部分だけを表示&非表示にすればいいってのわかるんですが メインフレームとかじゃなくて、サブフレームからメインフレーム操作ってのがどうも
フレームワークってそういう意味の言葉だっけ?
271 :
Name_Not_Found :2011/02/02(水) 17:51:45 ID:PPLsevli
フレームワークという言葉の使い方はほっといていいのか?
>>269 window.framesをごにょごにょすればいいよ
あとあからさまにフレームを毛嫌いするつもりはないけど
ものすごい今更感があるよ、フレーム
>>271 ありがとうございます!早速調べてきます!
275 :
Name_Not_Found :2011/02/02(水) 19:00:37 ID:K8zYrF01
じゃんけん のプログラムです。
http://akiba.geocities.jp/tr4583384/datsuijanken.html 勝った時、画像とリンクをしたいです。
location.hrefの使い方を、わかりません。
どこで、どのように使うべきでしょう?
<html><head>
<script language="JavaScript">
var aite;
var message;
function clickhere(n){
aite=Math.floor(Math.random()*3+1);
if(n==1) message="あなた:グー\n";
if(n==2) message="あなた:チョキ\n";
if(n==3) message="あなた:パー\n";
if(aite==1) message+="相手:グー\n";
if(aite==2) message+="相手:チョキ\n";
if(aite==3) message+="相手:パー\n";
if(n==aite) message+="あいこです";
else {
if((n+1)%3==aite%3) message+="あなたの勝ち";
else message+="相手の勝ち";
}
alert(message);
}
</script></head>
<body>
脱衣じゃんけん大会!<br>
<a href="JavaScript:clickhere(1);">グー</a><br>
<a href="JavaScript:clickhere(2);">チョキ</a><br>
<a href="JavaScript:clickhere(3);">パー</a><br>
</body></html>
パッと考えたけど $kekkaって変数でも作って 勝ったら+1、負けたら-1、あいこで+0とかにして 変数kekkaが5超えたら全裸とかでいいんじゃない? 4ならこの画像、3ならこの画像って感じで それと画像とか完成したらまたURL貼って教えてくれ
画像を変えるやり方がわからなかったら <div id="hyouji">ここに表示されます</div> とかやって var hyo = document.getElementById("hyouji"); if($kekka>=5) hyo.innerHTML = <img src="5.jpg"> elseif($kekka>=4) hyo.innerHTML = <img src="4.jpg"> ってやったりとか これは超テキトーだからアテにしたり、そのまま使わないでね。この記述方法じゃ間違いなくエラーになる 詳しくはDOM操作で DOMを使えばHTMLの記述をチェンジできます
ジェットストリームアタックも出来る!
279 :
Name_Not_Found :2011/02/02(水) 21:10:34 ID:K8zYrF01
>276 おもしろいね よかったら、それのソースおしえて じつは、まだ、javascriptよくわかってない 入門サイトみながら、つくってる おそいけど、 つくったら、またはる
280 :
Name_Not_Found :2011/02/02(水) 21:17:43 ID:K8zYrF01
>277 なるほど。 調べながら、ためしてみる。 >288 ガイア、オルテガ、マッシュさんのこと?
>>279 待て、野球拳の画像全部置いていけ。授業料だ
282 :
Name_Not_Found :2011/02/02(水) 22:43:32 ID:K8zYrF01
javascriptのシェルつかうと、たくさんいれたが、SyntaxError: Unexpected token < これが、常にでる。
なんで?
他に、よいシェルある?
シェルのソース
<script>
function p(s){
document.getElementById('stdout').innerHTML += s + '<br>';
}
</script>
<dl>
<dt>プログラム:</dt>
<dd><textarea id="src" cols="80" rows="25"></textarea></dd>
<dd><input type="submit" value="実行" onclick="
document.getElementById('stdout').innerHTML = '';
document.getElementById('stderr').innerHTML = '';
try {
eval(document.getElementById('src').value);
}catch(e){
document.getElementById('stderr').innerHTML = e;
}
"></dd>
<dt>出力:</dt>
<dd><div id="stdout"></div></dd>
<dt>エラー:</dt>
<dd><div id="stderr"></div></dd>
</dl>
>281
http://akiba.geocities.jp/tr4583384/imgres.jpeg
283 :
Name_Not_Found :2011/02/02(水) 22:44:34 ID:K8zYrF01
プログラミングでサイト参考にするのはよくないよ、サイトってのは調べもの程度にしとけ 基礎からじっくり学びたいんだったら3000円位の初心者向けの本一冊買うべし
俺はそんなにかわらんと思うけどね 本でもデタラメ書いてるときあるし 自分で情報を選べるならネットで十分だ
関数が解らないぐらいだったらいいけど オブジェクト指向って何?だったら本がいいな
>>282 javascriptのシェルになんでHTML入れるんだよ、別の言語
初心者向けの本を買ってまともなJavaScriptを覚えられるセンスのあるような奴は サイト参考にしたりネットで調べるだけでも充分できるものだよ できる奴はできるしできない奴は何をやってもできない
最初本で勉強してたけど内容が偏りすぎていて結局ネットで調べる羽目に googleの検索結果もksみたいな内容のサイトばっかり出てくるから検索スキルも身についたw
宣伝とかやめてください
俺が著者乙、宣伝スンナと言われても仕方が無いな すまん
英語読めれば本はいらなくない?
英語読めればね
>>282 (function (error) {
error.message = '\u003Cstrong>hoge\u003C/strong>\u003Cbr>\u003Cem>foo\u003C/em>';
throw error;
})(new Error);
297 :
282 :2011/02/03(木) 00:52:27 ID:Pu3nq/XH
>thx 本 かつ サイト で、勉強しよう 英語 も勉強必要 >287 どうやら、そのようです htmlはいってました 反省
jQuery1.5出たよ〜
出たね
300 :
282 :2011/02/03(木) 13:59:25 ID:Pu3nq/XH
>295 thx 私は間違ってたようです >296 ?
jqueryのリリースノートを翻訳してください
addEventListenerつかって、input要素のbuttonにイベント設定したんですが、 firefoxとchromeだけ反応がありません。 elem.onclick使って設定してもダメでした。 考えられる原因として何がありますか?
>firefoxとchromeだけ反応がありません IEだけ反応するの間違いじゃねーのw ソース出せよ
all=document.getElementsByTagName("input"); for(i=0;i<all.length;++i){ var buttonname=all[i].name; if(buttonname=="test"){ var buttonnode=all[i]; break; } } if(buttonnode.addEventListener){ buttonnode.addEventListener("click",Test,true); }else if(buttonnode.attachEvent){ buttonnode.attachEvent("onclick",Test); }else{ buttonnode.onclick=Test; } タグ内のonclick=の部分に書いてもダメでした。 IEだけしか反応しないの間違いですね。すみません。お願いします。
>>305 <input name="test" />はクリック可能?
disabledなどで無効になってるとイベントが起こらない
>>306 クリック可能です。
IEでは問題なく動くんですが。。。
ちなみにfirebugでステップ実行してみると、 最初のaddEventListener関数が実行されているところまでは確認しています。 その後、呼び出し先の関数にブレークポイントしかけても、 反応がないので、呼び出されていないようなのです。
このソースじゃ再現できないから再現できるものを貼って 一、トラブルを再現する最小限のサンプルを貼れる者
試したら普通に動いたからなんか凡ミスしてるんじゃないか
皆さんすいません。 alertだけの関数をセットしてみたら動きました。。。 関数の名前は間違ってないはずなんですけどね。。。 凡ミスっぽいのでもっと調べてみます。
気にせずまたいつでもこいや
一番上の階層にあるdivを消そうとするときってどうやるんですか? div.parentNodeで親要素取得しようとしたんだが、実装されていませんってエラーがでるんだが。 これって、それ以上の親がないってことですか?
JavaScript版テンプレートエンジンとフレームワークを教えてください
>>314 もうちょい詳しく書いてくれれば答えやすいです
>>314 これ以上上位のノードが無かったらnullが帰るはずだよ
あなたが問題ないなら環境ぐらい書いてくださいよ・・・ こっちは躓いてるんだから
>>316-317 parentNodeを実行した時点で、実装されていません、というエラーがでるので
戻り値は見れないです。
そのdivは、document.getElementsByTagName("div")で取得したものを、
ループして、getAttributeを使ってクラス名を取り出し、
あるクラス名と一致したものがそのdivです。
実行する前に、そのdivがundefinedじゃないこと、クラス名とタグ名が正しいことを
alert出して確認しています。
その後、そのdivを消すために親ノードを取得しようとすると、
parentNode関数で「実装されていません」というエラーがでます。
何がおかしいのでしょうか?
一番上の階層って言ったのは、bodyタグと同じ階層にあるということです。 <body> <div class="abc"> </div> </body> ↑こういうことです
divxのアドオン入れてないか? 前スレでそんな話あったぞ
>>320 とりあえずどのブラウザで実行したかを教えて
実装されていませんって出るならIEだろうな
325 :
Name_Not_Found :2011/02/03(木) 16:41:05 ID:UYsVxMBV
>>321 同じ階層じゃなくてbodyの一階層下なんだが、それはまあいいか
div.nodeNameとかdiv.nodeTypeとか見てみたらどう?
もしくは
>>322 が言うように、なにかがElementを書き換えてるとか
>>322-325 ありがとうございます。
nodeNameはDIVで、nodeTypeは1でした。
ブラウザはIE7です。
アドオンはちょっと見てみます。
アドオンは特に気になるようなものは無かったですね。 ちなみにさっきのだと親はbodyになるんですか?
むう。結局なぜかparentNodeではエラーが出てしまうので、 対象のdivを別のdivで囲って、その親divにidをつけて、 getElementByIdでそのIDを取得して、その親divから消すことで強引に解決させました。 原因が分かる方がいらっしゃれば、回答いただけると嬉しいです。
getElementsByTagName[0].parentNode って感じでやってIE7で普通に動いたのは確認しておいた
まさかとは思うが、parentNode()ってやってないよな?
>>331 ありがとうございます。
>>332 最初はやってて変なエラーが出ましたが、今はやっていません。
JavaScript版テンプレートエンジンとフレームワークを聞いておるのだ
getElementsByTagName()・getElementsByName()はnodelistを取得するからじゃないの?
336 :
296 :2011/02/03(木) 19:51:10 ID:???
>>300 サニタイズしてないのでセキュリティ上の問題が。
338 :
Name_Not_Found :2011/02/03(木) 20:23:55 ID:lszieM5f
if (!!window.screen)とif (window.screen)は同義ですよね? 何故わざわざ!をふたつつけるんでしょうか?
>>337 おおお!ありがとうございます!
いけました!
私の実行方法としては、
tmp=test.parentNode;
tmp.removeChild(test);
みたいなことしてたんですが、
test.parentNode.removeChild("test")
って、一行で書いたらなぜかいけました!
意味わかりませんが、ありがとうございました!
function test() { var a=0; b=0; } ↑こうやって変数を宣言してたら、それぞれの寿命はいつまでなんですか? aはローカル変数だから、関数が終了したら消滅だと思うんですが、 bはグローバル変数ですよね? bはいつまで値が保存されてるんですか? そのページが表示されてる間は、ずっと保存されてるという認識でいいですか?
createElement,appendChild,removeChild,DocumentFragment,createDocumentFragmentとか
色々あるみたいだけどHTMLを作って最後に一気にinnerHTMLの方がコード少なくて
楽そうだしそこそこ行数あってもそんなに遅くない気がする。
OSはWinXPSP3ブラウザはChrome。メモリリークは少し心配だけど休止使って何百時間とか
ブラウザ・OSとも再起動しなくても特におかしなこともない。
タスクマネージャで見ながらinnerHTMLでそこそこ大量のtable,div,brなど何度も
消したり入れたりしてみた。けどブラウザが勝手にメモリ開放してくれてるのか
タスクマネージャでは分からないものなのか物理メモリの利用可能はそんなに変わらない。
大量のタグを書き換える時でも時間が気にならなかったら素直にinnerHTMLでいいのかな?
createElement,appendChild,removeChild,DocumentFragment,createDocumentFragmentなど
innerHTMLの代わりに使うと幸せになれそうなことは時間が気にならなかったらないのかな?
>>340 は言ってる通りページ表示してる間はずっと保存されてて使おうと思ったらいつでも
使えると思う。
しばらくレスがないみたいなのでレスしてみた。
342 :
337 :2011/02/03(木) 21:55:04 ID:???
>>340 グローバル変数はそのページが unload されるまでは値が保持される。
メモリリークしていたら、ブラウザを終了するまでメモリから解放されない。
>>341 innerHTML でメモリリークする話は始めて聞いた。
リークパターンとなる条件や参考URLがあったら、教えて欲しい。
344 :
341 :2011/02/03(木) 22:19:00 ID:???
>>344 正直、何を問題としているのか良くわからない…。
件のURLは「IE7 で innerHTML が不振な挙動をする」と指摘しているのであってメモリリークとは書いてないし、Google Chrome で不具合が発生するとも書いてない。
どうして Google Chrome でメモリリークすると思ったのかな?
http://jsbin.com/ocepi3/1 IE8 でDOCTYPEスイッチを切り替えてみたがどれも正常に動作した。
IE7 のみ再現する不具合なのか、著者が何か勘違いしているのか…。
346 :
Name_Not_Found :2011/02/03(木) 22:45:34 ID:UYsVxMBV
>>341 希望通りに動いてればいいんじゃなイカ
今はどのブラウザでもinnerHTML使えるし
jQueryのloadメソッドとか、innerHTMLを使ってんね
読んだHTMLに<script>が入ってたときに、ちょっとはまったけど
347 :
341 :2011/02/03(木) 22:56:59 ID:???
C言語とかならメモリに気を使って当たり前でJavaScriptならそこまで気にしないでいいというのは分かる。
俺が心配なのはChromeであれIEであれinnerHTMLで消したタグの情報の行く末。
けどせっかくcreateやらremoveやらappendやらの関数があるのでinnerHTMLより有効な使い方はないかの2点。
>>345 のURLはどうやってみるの?
348 :
Name_Not_Found :2011/02/03(木) 23:12:07 ID:Pu3nq/XH
349 :
341 :2011/02/03(木) 23:49:53 ID:???
いやあれだね・・・素直にしばらくはinnerHTML使って、使いたいときにcreateやらremoveやらappendやらの関数を使うようにします。
innerHTMLはイベントリスナーとかとある右手みたくぶち壊していくから好きじゃないな
innerHTMLはevalと似て文字列をコードとして評価するから、ただただ綺麗じゃない感じがして使ってない
document.writeも?
>>305 > buttonnode.attachEvent("onclick",Test);
buttonnode.attachEvent("click",Test); じゃないか?
attachEventはon必要
356 :
Name_Not_Found :2011/02/04(金) 10:37:44 ID:e1hNPugn
ソートについて伺いたいのですが、 tableのtdの内容をソートするのではなく、 tableごとソートって出来るのでしょうか? 何か良いものがあればご紹介下さい。
フローティングウィンドウの作り方が載ってるサイトあったら教えてください。 jqueryを使わない方法で。
>>353 document.writeってそもそもXHTMLじゃ使えなかったから
何かそれがコピペだけのスクリプトから、JavaScriptの文法だのDOMだの知って書き始めたきっかけだった
以下のことをやりたいのですがどうもうまくいきません。 ・やりたいこと ダブルクリックしたときにダブルクリックされたところの要素の文字を取得 例えば -div テスト1 -br テスト2 -br テスト3 -br -/div ※-はタグです。 のような構成で "テスト2"の"ス"の部分をダブルクリックした時に"テスト2"という文字列が欲しいです。 文字列の対象範囲の特定はクリックされた位置から 前方に向かって空白が見つかるまで&後方に向かって空白が見つかるまで で考えてます。 document.selection.createRangeでcreateRangeメソッドを使って ダブルクリックしたときの要素が取得できるのは分かったのですが 対象要素全体での文字列等しか自分の技量では取得できませんでした。 何かいい方法があればよろしくお願いいたしますm(__)m
取得したい文字の要素全てにイベントしかけとけば?w
361 :
Name_Not_Found :2011/02/04(金) 16:25:05 ID:k7e7Zkr1
>>360 むしろ親要素に一個仕掛けておいて、event.target見てごにょごにょしたい
362 :
Name_Not_Found :2011/02/04(金) 16:52:22 ID:k7e7Zkr1
innerHTMLの話だけど IEでこうするとbuttonのinnerHTMLが空になりますな var div = document.createElement("div"); document.body.appendChild(div); var button = document.createElement("button"); button.innerHTML = "hello"; var fn = function(e){ alert((e.target ? e.target : e.srcElement).innerHTML); }; if(document.addEventListener) button.addEventListener("click",fn,false); else button.attachEvent("onclick",fn,false); div.appendChild(button); alert("まず普通にbuttonをappendしました"); div.innerHTML = ""; alert("divをinnerHTMで空にしました"); div.appendChild(button); alert("再度buttonをappendするとどうでしょう");
>>356 非常に意味不明な日本語だと思うがこういうことだと想像した。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<script type="text/javascript">
var t0, t1, a = new Array(10), b = new Array(10);
function init() { t0 = document.getElementById('t0'); t1 = document.getElementById('t1'); }
function randomize() {
for(var i = 0; i < 10; ++i) {
a[i] = i; b[i] = t0.rows[i]; b[i].cells[0].innerHTML=String(Math.floor(Math.random()*1000));
}
}
function sort() {
a.sort(function(i,j){return Number(b[i].cells[0].innerHTML)-Number(b[j].cells[0].innerHTML);});
for(var i = 0; i < 10; ++i) { t1.removeChild(b[a[i]]); t1.appendChild(b[a[i]]); }
}
</script>
<title>sample</title>
</head><body onload="init()">
<div><button onclick="randomize()">RANDOM</button><button onclick="sort()">SORT</button></div>
<table id="t0" border="2"><tbody id="t1"><tr><td>1</td><td>A</td></tr><tr><td>2</td><td>B</td></tr>
<tr><td>3</td><td>C</td></tr><tr><td>4</td><td>D</td></tr><tr><td>5</td><td>E</td></tr>
<tr><td>6</td><td>F</td></tr><tr><td>7</td><td>G</td></tr><tr><td>8</td><td>H</td></tr>
<tr><td>9</td><td>I</td></tr><tr><td>10</td><td>J</td></tr></tbody></table></body></html>
var img = Array.slice(document.links).filter(function(e){ return /\.(jpe?g|png|gif|bmp)$/.test(e.getAttribute("href")) }); リンク要素の集合から画像ファイルへのリンクを抽出する処理でこれよりスマートな方法を探してます 何かいい方法ありませんか
365 :
Name_Not_Found :2011/02/04(金) 21:41:35 ID:k7e7Zkr1
querySelectorで正規表現が使えれば document.querySelectorAll("a[href=/.*?¥.(?:jpe?g|png|gif|bmp)/]"); とか書けるなあ、と妄想した。
>>365 ありがとう!良いヒントになりました。
document.querySelectorAll("a[href$='.gif'], a[href$='.jpg'], a[href$='.jpeg'], a[href$='.png']");
こんな感じで書けますね
367 :
Name_Not_Found :2011/02/04(金) 22:07:45 ID:/ImTIRvL
<div id="wrapper"> <iframe src="./test.html"></iframe> </div> この時に、iframe上でおこったclickイベントなどを wrapperまで伝播させたいんですができますか? 伝播ができなくても擬似的に同様のことをできるのであれば教えてもらいたいです。
ふごふご
iframeにonclickを設定した場合って検知できるんだっけ。いや、出来なかった気がする。 iframe内でwindowとかにonclickでwindow.parent.$('wrapper').onclick()とか。 あるいは、iframe.contentWindow.onclickにでも。
>>367 iframe 上で click を拾った時に parent に dispatchEvent してみたらどうだろう?
>>369 jQuery で iframe 上のイベントを操作するなら、2つ jQuery が必要だと思う。
呼び出し側で ownerDocument を変更できないから。
window.onclick って有効なんだな。始めて知った。 DOM 規定では document までしか伝播しなかったと思うが、HTML5 規定なのかな?
>>371 jQueryはしらんがな。
同じドメインなら
>>369 で。(違うドメインはwindow.parentいじれないはず)
$はgetElementById
window.onclickダメだっけ。document.でもbody.でも臨機応変によろ。
どこのサイトだか忘れましたが、 文章内をハイライトするとPOPアップでこの用語を検索みたいなことをしているページがありました。 ハイライトを検出するイベントと、ハイライトした文字列を取得する方法を知りたいのですが、 どなたかご存知の方教えていただけませんか?よろしくお願いします。
ハイライトって文字列選択ってことか?
window.getSelection().toString();
0から100までの値を配列にランダムソートした形で格納したいのですが スマートな方法ってありませんか?
>>378 エスパーするとそこに配列を使うのが間違ってる
何を使うのがよいでしょうか?
378じゃないけど配列に格納しない方法があるなら俺も知りたい
a === bみたいに厳重な比較ってJavaScriptって出来ました?
一、自ら学んでJavaScriptコードを書く意思を持つ者
ニ、兄ちゃんこのマンガ貸して
三、死して屍拾う者無し
俺は厳重に比較が出来るか聞いておるのだ
できるけどそれくらい調べて下さいよ
>>382 ありがとうございます
そのアルゴリズムで試したんですが処理に時間がかかりました
配列に100も値があると高速化は厳しいでしょうか?
var a = [0,1,2,〜98,99,100];
var b = shuffle(b);
function shuffle(list){
var i = list.length;
while (--i) {
var j = Math.floor(Math.random() * (i + 1));
if (i == j) continue;
var k = list[i];
list[i] = list[j];
list[j] = k;
}
return list;
}
>>389 どのアルゴリズムを選んだか知らんが10000個の配列でも5ミリ秒もかからないけど?
Array.prototype.shuffle = function() {
var i = this.length;
while(i){
var j = Math.floor(Math.random()*i);
var t = this[--i];
this[i] = this[j];
this[j] = t;
}
return this;
}
var test = [];
for(var i = 0; i < 10000; i++)test.push(i);
console.log(test); // [0,1,2…,9999]
var b = new Date().getTime();
test.shuffle();
console.log(new Date().getTime() - b); // かかった時間(ms)
>var a = [0,1,2,〜98,99,100]; ここってまさか手書きで0から100まで入力してるの?
エロサイトで迷わないためにリンク一覧作るスクリプト(chromeでのみ確認) chrome使ってるとリンク一覧生成する拡張でいいのがないから自分で書いてみました これをブラウザに貼り付けると新規ページでユニーク&ソートした形でリンク一覧表示します これをもっと文字数減らしたり高速化したり最適化、もしくは5大ブラウザ対応するならどのように書けますか? 変数も好きなようにつけてください 素人なのでこんなんしか掛けないので上級者のコードが見たいです ↓1行が多くなって投稿できないのでセミコロンの箇所に改行いれてます javascript:var obj = document.getElementsByTagName("a"); var len = obj.length; var link = len ? new Array(len):[]; for (var i=0; i<len; i++){if (obj[i].href != "") link[i] = '<li><a href="' + obj[i].href + '">' + obj[i].href + '</a></li>'; }var s = '<ul>' + uniq(link).sort().join("") + '</ul>'; var w = window.open(""); w.document.open(); w.document.write(s); w.document.close(); function uniq(a){var t = []; var r = []; var i = 0; var f=0; while(a[i] != null){if(a[i] != ""){if(!t[String(a[i])]){t[String(a[i])] = 1; r[f]=a[i]; f++; }}i++; }return r; }
393 :
JS評論家 :2011/02/05(土) 19:56:59 ID:???
迷うやつなんていねえよばかだろ javascriptやってるやつは いちいち見るやつにたいしてよせいなおせっかいだな
なんで0〜99か1〜100じゃなく0〜100なんだ? // 初期化 var ary = new Array(101); for ( var i = 0; i <= 100; ++i ) ary[i] = i; function shuffle1() { for ( var i = 0; i <= 100; ++i ) ary[i] += ~~(Math.random()*1000)*1000; ary.sort(); for ( var i = 0; i <= 100; ++i ) ary[i] %= 1000; } function shuffle2() { ary.sort(function(a, b) {return ~~(Math.random()*3)-1}); } どちらかお好きな方で。
>>392 window.open().document.write('<ul>' + Array.prototype.map.call(document.links, function(e){return '<li><a href="' + e.href + '">' + e.href + '</a></li>';}).join('') + '</ul>');
ユニーク処理が長くなるから勝手に省いた
ソート処理忘れてた。.jsoin('')の前に.sort()入れればいい
try〜catchで一つ目のtryでエラーが出たらまた次のtryへというのは try {} catch (e) { try {} catch (e) { try {} catch (e) {} } } こんなふうに書くんですか?if elseみたいに入れ子じゃないように書けたりしますか? 入れ子じゃなくフラットにするには function () { try { return 〜 } catch (e) {} try { return 〜 } catch (e) {} try { return 〜 } catch (e) {} } みたいに書くものですか?
すみません ×if elseみたいに ○else ifみたいに
入れ子でないと動かないでしょ 普通はエラーが発生しないように組んでtryは極力使わないようにするものだがなあ
入れ子にするしかないんですね どうもありがとうございます
401 :
JS評論家 :2011/02/05(土) 21:07:23 ID:???
お前らカスさあ なんでJavaScriptやってるのかな 低底糞ゲロWEB企業のやつだろぉ? っていうかさあ ガキくさいんだよね 大人が真顔で、JavaScriptについて熱弁してると キモキモ ぐだぐだいってねえでPerl様にドゲザしてみろよカス
402 :
Name_Not_Found :2011/02/05(土) 21:11:03 ID:0Z5v49jj
てか大文字だぜ()笑
Array.mapってIEで動いたっけ
405 :
Name_Not_Found :2011/02/05(土) 21:14:45 ID:LkHZi9Mh
>>400 else if も入れ子よ
if(a == b) alert("BBB!!");
else if(a == c) alert("CCC!!");
ってカッコ省略しないで書くとこうじゃん
if(a == b){
alert("BBB!!");
}
else{
if(a == c){
alert("CCC!!");
}
}
>>392 おおwこれはw
便利ですねお借りしますw
>>408 IEには標準装備されてないみたいですが
>>409 IEで動くようにするためのArray.mapと同等のコードがMDCにある
>>408 >>411 わざわざ別のものを出してくるってことは、
それはリンク先に貼ってある既出のコードと違うものなの?
>>394 ~~(Math.random()*3)-1 って何してるの?
>>413 ・Math.random()は0以上1未満の実数を返す
・3倍して0以上3未満にする
・~~は「整数化」してビット反転のまた反転=元通り、Math.floor()の代わり
これで0,1,2のいずれかになる
・1引いて-1/0/1になる、これをsort()で大小関係の判断に使う
>>414 0〜9999数の配列で試してみましたが、
IE: 1桁の数が配列の最後の方に集中
Firefox: 1桁の数が配列の最初の方に集中
なぜそうなるのかは分かりませんが、偏りがありますね。
>>415 後は乱数の質の問題だからなぁ。
適宜メルセンヌツイスターでも実装してもらうとかw
417 :
Name_Not_Found :2011/02/05(土) 23:38:35 ID:LkHZi9Mh
>>414 >~~は「整数化」してビット反転のまた反転=元通り、Math.floor()の代わり
勉強になりました
Math.floor使った方が速いだろうし、初心者相手の説明に使うのはお奨めできないけど a=3.14e+10; ~~a == Math.floor(a); // false
シャッフルするのにO(N)より計算量大きくするの阿呆だろ。 sortの比較関数に乱数って全然シャッフル保証されないし 下手するとものすごく遅いし。 function swap(a, i, j) { var x = a[i]; a[i] = a[j]; a[j] = x; } var a = new Array(100); for(var i = 0; i < 100; ++i) a[i] = i; for(var i = 0; i < 100; ++i) swap(a, i, i+Math.floor((100-i)*Math.random()));
420 :
js評論家 :2011/02/06(日) 00:00:52 ID:???
ここのスレは相変わらず低レベルだなカス
422 :
js評論家 :2011/02/06(日) 00:05:23 ID:???
ていぞこくそ に決まってんだろ なにが大文字だ クソゲロごみjs書いててかわいそうだな お前らさあ 目覚まして jsとか本当にネタじゃないよな? なんか上のほうで、じゃんけんスクリプトとかあったよな 小学生なのか? 10〜40台のごみくずにーとがJavaScirptとかわめいててほんと痛いぜえ? いたくねえか?だってあんなブラウザの表面上のことでわめいてんだぜ ほんと笑っちまうぜ まじさあ、大人が三輪車のったりポケモンカードやってるほどの痛さだぜ? いいかげんにしろよな カス
Cの感覚だと、関数呼び出し(Math.floor)よりも演算子(~~)の方が速い印象がある。
424 :
js評論家 :2011/02/06(日) 00:10:02 ID:???
じゃんけんスクリプト、動画プレイヤー もう笑わせないでクレよほんとうに 動画プレイヤーとかいい年下大人が、そんな必死に見た目のUIや効率もとめてていたいんだよ ばかだから、ほんとに あほじゃね? ひまわりとか死ねよ にこにこも なにがたのしいの?動画みてさあ あたまわいてんじゃないの? カスども カスどもはさあ amachangとかフォローしてんでしょお?ばかだから javascirptのカス同士サイ本みたり なあjsonとかわめいてればいいよ雑魚 スカイプをjsで操作してよろこんでるはげつるもいるしさあ >421 おめえこなくていいとかいってるけどさあ お前も低レベルな質問してんじゃねえよ?じゃんけんとか じゃんけんスクリプトで勝ったら画像みせるとか まじでいってるの? 失笑ものだぜ?それなら画像くらいちょくでみせろよ ばかじゃねえの?本当に なんかここのスレみるけど、非実用的な3ステップゴミゲロコードしかないじゃん お前らほんとうにカスだな カスが
>>423 Cの場合は普通、元から整数の値をビット反転させますから
2ちゃんって荒らしの削除とアク禁はちゃんと可能なんだよね。 まあお楽しみにどうぞ。
427 :
js評論家 :2011/02/06(日) 00:20:01 ID:???
ゆるしてください
ちょっと計ってみたが心持ち演算子の方が速いかな。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head> <title>???</title> </head><body> <pre><script type="text/javascript"> var c = 0, t1, t2, t3; t1 = new Date().getTime(); for(var i = 0; i < 100000; ++i) c += Math.floor(Math.random()*3); t2 = new Date().getTime(); for(var i = 0; i < 100000; ++i) c += ~~(Math.random()*3); t3 = new Date().getTime(); document.writeln(t2-t1); document.writeln(t3-t2); </script></pre> </body></html>
~~ ってなんだよ |0 だろ
これまでにそれが出てなかったことに驚き。若干はやいね。
Pentiumだと、FPUのレジスタからCPUのレジスタへ整数で転送可能だからかな。
|0は式によっては優先順位が変わっちゃうから。 ~~だと単項だから真っ先にやってくれる。
またperlの知恵遅れが暴れてるのか
|0の方が速いね。
そんな速度を必要とする奴なんてこれっぽっちもいないんだから 素直にMath.floor使っとけ
~~とかトリッキーなコードは個人の趣を深めるには適してるがそれをパブリックにすると保守が面倒
437 :
392 :2011/02/06(日) 12:59:26 ID:???
とりあえず5大ブラウザ対応やってみようかな
トリッキー上等で質問させて下さい。 (使用フォントはUTF-8で) 変数名に2バイトコードを使えてしまうのは、偶然ですか?それとも必然ですか?
2バイトコードが使えないなんて制限あった? 日本語変数とかJS初心者講座サイトとかで昔からよく見てきたけど
仕様なんですか、ありがとうございました。
442 :
Name_Not_Found :2011/02/06(日) 14:13:19 ID:wEcnqRXd
テーブル的に使う目的で var a = ["北海道","青森県",…,"沖縄県"]; var kanji_number = {}; for(var i=0,l=a.length ; i<l ; i++){ kanji_number[a[i]] = i; } ってよく作る
この文脈と何の関係が?
>>438 フォントは表示する上での物であって、
そういう場合は文字エンコーディングとか、単に文字コードとか
書かないと伝達性が悪いよ。
jsonなんですが [ {"a":"100"} { {"b":"200"}, {"b":"300"} } ] json[0].aで100 json[1][0].bで200 json[1][1].bで300 と表示させたいのですがjsonの記述エラーになります jsonのどこを書き換えたらよいでしょうか?
意図する形は多分こうなのかな。 [ {"a":"100"}, [ {"b":"200"}, {"b":"300"} ] ]
>>446 さんあなたは神です
ありがとうございます!このご恩は忘れませんっ!
まさかそんなに感謝されるとは思わなんだ。
恩なんて次の日には忘れてるから大丈夫だ
,
451 :
Name_Not_Found :2011/02/06(日) 21:01:20 ID:9Uxt94G9
Prototype Window の Window内でJavaScriptを使用することは 可能でしょうか?
452 :
Name_Not_Found :2011/02/07(月) 04:56:42 ID:poFm2qVk
jqueryについて質問です。
jqueryでページ遷移をする際にアニメーション効果をつけてみたのですが、
下記のようにpositionを付けるとanimateやcssがIEで効かなくなってしまいます。
<div style="position:absolute;">
<a href="./test.html">fade</a>
</div>
こういう場合はどうすればいいのでしょうか?
参考にしたサイトはここです。
http://e2designer.seesaa.net/article/159745163.html どなたか教えて下さい。
質問です frame.html <html> <head> <title></title> <frameset rows="50%,*"> <frame src="a.html"> <frame src="b.html"> </frameset> </head> </html> b.html <html> <head> <title></title> <input type="submit" value="aを消す" onclick=""> </head> </html> とやって、aフレームを消したいのですがどのようにすればいいのでしょうか? window.flamesで調べてみてもそれらしいのが出てこなくて
flames× frames○
frameは過去の産物です
appendChildって、その要素の子要素として末尾に追加するメソッドですよね? ある要素の後ろにくっつけたい場合はどうすればよいのでしょうか? 例えば、 <div class="test"></div> <div class="tsuika">/div> ↑のtsuikaクラスのdivのように、testクラスのdiv内ではなく、 その後ろに追加したい場合のことを言っています。
次の要素の手前へinsertBefore()。 末尾ならappendChild()。 …ってこれ、なんで「これの次」っていうのがないんだろうね。
>>456-457 そうやってあらゆる場合に便利なものを入れ出すとAPIがどんどん
肥大するからじゃないですかね。(1)testの前に入れて、(2)testを
削除して、(3)入れたものの前にtestを入れ直す、とかすれば
最後かどうかの枝分かれ無しにできることはできるね。
>>455 じゃあなんで2chは未だにframeしてるのかな?
>>457-458 ありがとうございます。
そんなに面倒なことしないといけないんですね。
jQueryなどの内部でもそういう風にしてるのでしょうかね。
ありがとうございました。
>>458 じゃあなんでhtml5ではframe要素が廃止されたのかな?
a要素にinnerHTMLって無理ですか? 未定義の実行時エラーってでるんだが。
>>461 table要素に対して実行した時なら知ってるけど・・・
具体的なソース貼れる?
>>462 ありがとうございます
色々試してみたら、特定の文字があるときだけ出るっぽいです。
未知の実行時エラーでした。未定義じゃなかったです。すいません。
どうやらaタグの中にaタグを入れるとでるっぽいです。 なんとかします。ありがとうございました。
aの子供にaはだめだからね > 一、正しい(validな)HTMLとは何か知っており書ける者
はじめて書き込みます。 今、JavaScriptで簡単なアクションゲームを作ろうとしている厨房です。 以下ソースです。 <meta charset="UTF-8"> <table summary="Top" cellspacing="0" cellpadding="0" border="1" Height="200" width="200"> <caption>Top</caption> <td valign="center">● </td> </table> <table summary="Button" cellspacing="1" cellpadding="1" border="0" bgcolor="cddddd"> <caption>Button</caption> <td valign="center"> <td><input type="button" value=" ↑ " onClick=""></td> <td><input type="button" value=" ・ " onClick=""></td> <td> </td> <td><input type="button" value=" ← " onClick=""></td> <td><input type="button" value=" → " onClick=""></td> </table> 上記の"↑"ボタンで"●"をジャンプさせたり、 "→"や"←"のボタンで"●"を移動させたいと思っているのですが、 onClick=""でやり方はありますでしょうか? ご回答のほど宜しくお願いします。
質問が抽象的すぎる。どこがわからんのか具体的にかけ。
ええと、ボタンをクリックして、物体を動かしたいということです。 ジャンプの場合は、上に跳んでから、下に落ちてくるのが望ましいです。
aの中にa入れるとかジョークだろw
物体なら動かせばいいじゃん 物体の動かし方がわからないの?理解度はどれくらい? 重力の法則とか大丈夫? それ以前、オブジェクトの移動は普通にできるの?
>>469 すいませんでした。
displayをblockにしてリンクをブロック全体に影響するようなaの中に、
色を変えた文字を書こうと思って、aタグを使ってしまいました。
fontタグで解決させました。
正しいHTMLをもっと勉強します。
え?何?コードを代わりに書いてくれって事?w
すみません。あまり分からないです。 ←→の場合はボタンを押したら●が少し動くようながが良いです。
丸投げ1丁はいりました^^
jQuery使ったら楽だよ厨房でもできる
厨房がなんでこんな時間にいるの?
>>473 それが君の具体的な質問か。
そんなんじゃ社会に出たらやっていけないぞ。
まずはjQueryでも触ってみなさい。
jQueryをそこそこ扱えるようになったらまた来なさい。
2ヶ月前にPCが壊れてしまって、ツールは使えません。 今はiPhoneのアプリでjsのテストをしています。
jQueryはツールじゃない。ライブラリだ。
ダウンロードも出来ません;
どうやってネット接続してんだ
まず学校行け
壊れたというのはPCだけなので、回線は大丈夫です; 学校は早く終わりました。
485 :
Name_Not_Found :2011/02/07(月) 14:08:00 ID:HJlT1jkC
>>484 みんな厳しいなw
とりあえず、なにがわからないのか
逆に何が分かるのかを書いてみようよ
背伸びをせずコツコツ勉強してもらいたいんだよ
自己解決したかもしれません。 <!--Sample--> <meta charset="UTF-8"> <script type="text/javascript"> <!-- function moveByLAYER(layName,offsetx,offsety){ if(document.getElementById){ //e5,e6,n6,n7,m1,o6用 var oj = document.getElementById(layName).style oj.left = ( parseInt(oj.left) + offsetx ) + 'px' oj.top = ( parseInt(oj.top) + offsety ) + 'px' } else if(document.all){ //e4用 document.all(layName).style.pixelLeft += offsetx document.all(layName).style.pixelTop += offsety } else if(document.layers) //n4用 document.layers[layName].moveBy(offsetx,offsety) }
function moveLAYER(layName,x,y){ if(document.getElementById){ //e5,e6,n6,n7,m1,o6,o7,s1用 document.getElementById(layName).style.left = x document.getElementById(layName).style.top = y } else if(document.all){ //e4用 document.all(layName).style.pixelLeft = x document.all(layName).style.pixelTop = y } else if(document.layers) //n4用 document.layers[layName].moveTo(x,y) } //--> </script>
<style type="text/css"> <!-- .posabs { position:absolute } #test1 { left:100px; top:180px; font-family:Osaka,Arial; font-size:12pt } --> </style> <div style="position : absolute ; top : 100px ; left : 120px ;" id="test0"> <img src=".gif"> </div> <div class="posabs" id="test1"> <center> <form> <input type="button" value="←" onclick="moveByLAYER('test0',-15,0)"><input type="button" value="→" onclick="moveByLAYER('test0',15,0)"> </form> </center> </div> <!--/////////////////// End of Sample ///////////////////-->
>>485 ええと、物体をボタンで動かす所と、
物体を上に移動させてから、下に落ちてくる所です
急がば回れ javascriptの事何にも解らないで付け焼刃のその場しのぎの情報で作ったとしても理解してないんだったら一つのモノを作るのは無理 何か初心者向けの本とか買ってそれからにするといいよ
javascriptのゲーム用ライブラリってなかったっけ?
akihabara
496 :
Perl評論家 :2011/02/07(月) 18:09:45 ID:A8rcpC2/
ブラウザ型で熱中できるゲームなんてあんまりねえから お前らが個人用でブログにテトリスとかシューティングつくってもゴミだろ 最初からつくるなごみ 死んどけ
497 :
Name_Not_Found :2011/02/07(月) 18:19:50 ID:HJlT1jkC
>>490 またえらい古いサンプルですな
とりあえず左右ボタンを押すとなぜ動くのかはわかってるんだよね?
下に落ちるのは、横に動くのと同様に下方向に移動させればいいよ
で、ボタンの操作なしで落ちるわけだから、時間のループ作ってそれを
繰り返せば、勝手に落ちていくようになる
1ループ毎に落下距離を大きくしていくと、自由落下っぽくなるよ
498 :
Name_Not_Found :2011/02/07(月) 20:51:34 ID:tVSxd/q1
ああいう丸投げして自分は努力しないクズはスルーでいいよ
レイヤーとか数年ぶりに見た気がする
501 :
Name_Not_Found :2011/02/07(月) 22:23:10 ID:HJlT1jkC
丸投げは良くないけど、やってくれとも言ってないし 高校か大学生くらいで、全く初めてプログラムとか書いてて なんて聞いて良いかすらわからんのではないのかね
まだまだですが一応少し出来たので貼ってみます。 <meta charset="UTF-8"> <script type="text/javascript"> <!-- function PlayerMove(layName,offsetx,offsety){ if(document.getElementById){ //e5,e6,n6,n7,m1,o6用 var oj = document.getElementById(layName).style oj.left = ( parseInt(oj.left) + offsetx ) + 'px' oj.top = ( parseInt(oj.top) + offsety ) + 'px' } else if(document.all){ //e4用 document.all(layName).style.pixelLeft += offsetx } } function moveLAYER(layName,x,y){ if(document.getElementById){ //e5,e6,n6,n7,m1,o6,o7,s1用 document.getElementById(layName).style.left = x } else if(document.layers) //n4用 document.layers[layName].moveTo(x,y) } //--> </script> <div style="position : absolute ; top : 100px ; left : 120px ;" id="test0"> ∧_∧<br> <`Д´><br> 彡|つ |つ (_(_) </div>
<style type="text/css"> <!-- .button1 { position:absolute } #test1 { left:10px; top:200px; } --> </style> <div class="button1" id="test1"> <table summary="Button" cellspacing="1" cellpadding="1" border="0" bgcolor="cddddd"> <caption>Button</caption> <td valign="center"> <td><input type="button" value=" ↑ " onClick=""></td> <td><input type="button" value=" ・ " onClick=""></td> <td> </td> <td><input type="button" value=" ← " onClick="PlayerMove('test0',-5,0)"></td> <td><input type="button" value=" → " onClick="PlayerMove('test0',5,0)"></td> </table></table>
504 :
Name_Not_Found :2011/02/07(月) 23:08:15 ID:tVSxd/q1
貼らなくていいからブログでやってくれ
フォームにデータを入力して入力履歴を残すにはどうすればよいでしょうか? PHPなどにデータを送って画面遷移したときは残るのですが、 あるボタンを押してjavascriptで新しいウィンドウを立ち上げるときなどは 入力履歴が残らなくて、ちょっと不便を感じています。
一瞬「新しいウィンドウ立ち上げ画面」に遷移して、それから窓を 開くとともに元の画面に遷移して戻ればいいんじゃないの。
ありがとうございます。 もともともとの画面は色々データを読み込んでいるので、 あまりページを更新ししたくないんです。 何もページ遷移せずに、フォームに入力履歴を残したいんです。 やはり厳しいですかね?
>>504 すいません知りませんでした;
ありがとうございます。
履歴はプライバシ情報だからJavaScritpからのアクセスは厳重に 制約されている。だから履歴を追加するとしたらページを実際に 遷移するしかない。残って欲しい情報が何と何か正確に分かって いるのなら、それらを別窓などを使って保存しつつ2回遷移して 復元するのでいいと思ったが、まあ面倒ならあきらめるんじゃない?
オートコンプリートのことなら、onsubmitで動作させれば残るんじゃないの
そうなんだ! どのブラウザでもOKですか?
面倒くさいからクッキーにでも残しておけば?
localStrage使えば良いじゃん・・・
またバカが来た
516 :
Name_Not_Found :2011/02/08(火) 15:11:35 ID:rpv/gD18
feedの日付表示形式を2011/2/7 → 2011/02/07 に変更したいのですが、教えて頂けないでしょうか?
//APIを読み込む
google.load("feeds", "1");
//初期関数
function initialize(){
//読み込むフィードを設定する
var mynow = new Date();
var q = mynow.getMonth(); //月を取得
var q2 = mynow.getDate(); //日にちを取得
var q3 = mynow.getHours(); //時間を取得
var q4 = mynow.getMinutes(); //分を取得
var q5 = mynow.getSeconds();//秒を取得
var query = q+"0"+q2+"0"+q3+"0"+q4+"0"+q5; //月日時間
var feedurl = new Array("
http://feeds.fc2.com/fc2/xml?host=********** "+"&"+query);
var feed = new google.feeds.Feed(feedurl);
≪省略≫
var date = new Date(entry.publishedDate);
≪省略≫
<th>'+ date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日"+'</th>
517 :
516 :2011/02/08(火) 15:13:19 ID:rpv/gD18
2011年2月7日→2011年02月07日 の間違いでした。すみません・・・(恐縮
一桁のときは前に0つけたらいいだけじゃないか
queryの処理が無駄だなMath.random()でいい
if文でできるじゃないか
(date.getMonth()+1).replace(/(^[1-9]$)/,'0$1') (date.getDate()+1).replace(/(^[1-9]$)/,'0$1')
aとbに同じ関数を適用したいのですが、 a.hoge(); b.hoge(); といった感じではなくいっぺんにやる方法はないでしょうか? [a,b].hoge(); とかしてみたのですがだめでした。
配列にいれてぶんまわすか、可変引数にでもしたらどうだい
524 :
Name_Not_Found :2011/02/08(火) 16:13:40 ID:RaXqJGLK
>>522 var hoge = function () { alert('hoge');}, a = {hoge: hoge}, b = {hoge: hoge};
[a, b].forEach(function (element) { element.hoge(); });
forEachが一番楽だな
526 :
Name_Not_Found :2011/02/08(火) 18:37:26 ID:4qraLkTG
>>521 正規表現を使わずに
(date.getMonth + 101).toString().substr(-2);
(date.getDate + 100).toString().substr(-2);
とかどうだろう
>>511 onsubmitでは記録されませんでした。
他の方がいってるクッキーを使うというのはどういうことでしょうか?
クッキーに値を記録することはできますが、
それをどうやってフォームの入力履歴欄に表示するのでしょうか?
528 :
Name_Not_Found :2011/02/08(火) 19:15:19 ID:6nMsARv9
operaはきれ
ライブラリっつうか定期的に見に行けばいいじゃん
531 :
Name_Not_Found :2011/02/08(火) 19:34:46 ID:RaXqJGLK
>>527 例えば、JavaScript で入力履歴が記録されている Cookie を読み出して、サジェストするとか。
532 :
531 :2011/02/08(火) 19:39:01 ID:RaXqJGLK
533 :
Name_Not_Found :2011/02/08(火) 22:57:29 ID:pn+QH8bs
指定の要素内にマウスがあるかどうかをチェックするにはどうしたらいいんでしょうか?
mouseoverじゃいかんの?
a要素にmouseoverのイベントを設定しました。 evt.targetまたはevent.srcElementでそのオブジェクトを取得しようとしたところ、 なぜかオブジェクトではなく、hrefの値を返してきたのです。 a要素にイベントを設定した場合では、これは通常の動作なのでしょうか? もしそうであれば、a要素にイベントを設定した場合、 どのa要素で発生したものかを調べる方法を教えて下さい。
tagNameプロパティ見ればAって出る
evt.targetを取得した時点でhrefの値が入ってしまっているので、 tagNameプロパティは見れません。 オブジェクトではないとエラーになります。
すみません、親要素と子要素って何なんでしょうか?
540 :
Name_Not_Found :2011/02/09(水) 06:18:41 ID:4JU7sUXN
少しはググれよなあ、ふんとにもう! htmlの要素って階層(入れ子)構造になってるでしょ で、ある要素から見て、1つ上層の要素が親要素、1つ下層の要素が小要素だよ
いやぁ、ググっても皆知ってる事前提に話しちゃってて ありがとだっぴ!
>>535 よくわかってないので自分も知りたいところですが
使い捨ての関数は、いちいち命名して別の場所から呼び出すより
(function(arg){・・・})(x); と無名で即時実行したほうがよいかなと
document.write(cube(5));
var cube='foo';
function cube(x){return x*x*x;}
document.write(cube);
関数宣言はこういう書き方もできてしまうあたり個人的には微妙
>>538 > evt.targetを取得した時点でhrefの値が入ってしまっているので、
再現するコードと環境は?
>>538 別に問題ないけどー。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head>
<title>sample</title>
</head><body>
<div><a href="
http://www.example.com "
onmouseover="alert((event.target||event.srcElement).tagName);return false">
test</a></div>
</body></html>
>>543-544 ありがとうございます。
今コード用意できないんで、帰ったらまた再現コード作って貼りにきます。
>>544 たしかにこれだと大丈夫ですね。
イベントはaddEventListenerかattachEventで設定してるんですけどね。
546 :
516 :2011/02/09(水) 10:21:26 ID:CnM8i7Jn
>>521 教えて頂いた通りに修正したつもりでしたが、エラーしてしまいます
お手数をお掛けしてすみません。。。
<th>'+ date.getFullYear()+"年"+(date.getMonth()+1).replace(/(^[1-9]$)/,'0$1') +"月"+(date.getDate()+1).replace(/(^[1-9]$)/,'0$1') +"日"+'</th>
547 :
Name_Not_Found :2011/02/09(水) 11:11:11 ID:g1aPuIMg
ドメインAとドメインBの2つのサイトを持っています ドメインAからドメインBのページをiframeで読み込んでCSSを適用することは可能でしょうか?
クリックジャッキング乙でございますぅ!
違ったw
すみません、正規表現で /[\<img].+[\/\>]/gi を使用してimgタグを抽出したいのですが、一緒に<br>タグも抽出されてしまいます。この正規表現の指定方法が悪いのでしょうか? ご教授のほどよろしくお願いします。
× .+ ● .*?
/<img[^>]+>/ig これでどうだろう
>>551 なんとも早いレスありがとうございます!
ですが、ご教授いただいた通り
/[\<img].+[\/\>]/gi
を
/[\<img].*?[\/\>]/gi
に変更した所、まだ<br>タグに反応している他、imgタグも区切られて配列に入れられてしまいます。
という事は、正規表現以外の所が良くないのでしょうか?
申し訳ありません。
>>552 なんと…期待通りの結果が出ました!
本当にありがとうございます!
これを元に勉強し直したいと思います。
>>551 ,
>>552 お二方、ありがとうございました!
>>553 何がしたいの?
>>554 [^>]+がミソ。
>以外の文字が1つ以上あるっていう意味だから、
imgタグの最後の>までがマッチするってわけ。
ハッシュを取得したいのです #aaa #test とかは取れるんですが #aaa bbb #test ggg みたいに風伯を含んでるものは取れません alert(location.hash);
>>555 なるほど!
やはり正規表現は考え方が複雑ですねぇ…
しかし、何故 /[\<img].+[\/\>]/gi で<br>まで引っかかるのか不思議です。
ただ単に正規表現を理解できてないだけなんでしょうけどw
解説までありがとうございます!
>>557 .+だと<br>も対象に入っちゃうからだと思いますが。
何回も書くけど、個人的に正規表現はマッチさせるというよりかは、 他のものをマッチさせないって考えて書いた方がうまくいく気がする。
>>559 /[\<img].+[\/\>]/gi
↓
"<img"の後に何でもいいから文字があり、"/>"で終わっているモノのみ
ではないのですね…
考え方がよくわからない…これは一から勉強し直しですね。
そもそも\を入れる必要も無かった事にびっくりですw
ありがとうございます!
>>560 おお、よくある間違いなんですね。
できれば自力で解決したかったので過去ログを見ていませんでした、申し訳ないです…
なるほど、その考え方で一度考えてみます。
ありがとうございます!
>>556 もともとhash部分に空白を含むことはできない。空白を含むならそれは
validでないURIだから取れなくて当り前。
564 :
Name_Not_Found :2011/02/09(水) 18:50:21 ID:rXF6mPzT
>>535 > FunctionExpression と FunctionDeclarationの違いって、評価されるタイミングだけなんでしょうか?
そのページの解説は「Function#name に違いがあるので、FunctionDeclaration を使用した方がよい」と読めるが…。
付け加えると、Function#toString, Function#valueOf の値にも違いが出るはず。
> あと (function(arg){・・・})(x); みたいな書き方のメリットってなんなんでしょうか?
基本的に匿名関数を使う理由は1回しか呼び出す必要がないから。
クリティカルな答えが欲しいなら、コードを書いてくれ。
565 :
Name_Not_Found :2011/02/09(水) 18:56:53 ID:rXF6mPzT
>>535 評価された関数式は生成オブジェクトへアクセスするための参照を返す。
関数宣言は生成オブジェクトへアクセスするための参照を宣言時に指定した識別子に持たせる。
互いのオブジェクト生成規則からすれば当然の振る舞いである。
> (function(arg){・・・})(x);
よくわからん。自己管理できるくらいのちっぽけなプログラムなら、グローバルに置いとけばいいと思うけどね。
それなりに意味のあるクロージャを作らないと、見ていてイタい。
は?
自分のソースが質の高い人間にイタがられてると思うとゾクゾクするな・・・
alert("test")は三流 function _alert(str){alert(str)};_alert("test");は二流 さて、一流コードを書いていただけますか?
570 :
564 :2011/02/09(水) 21:39:55 ID:rXF6mPzT
(function(arg){・・・})(x); 今時、こんな書き方はトリッキーでも何でもないじゃない。 寧ろ無名関数でラップするだけで、名前空間を汚染しないなら、それだけで価値あるんじゃないかしら。 他にも、return を使って、途中で実行を中止できたり、何かと便利だと思うわ。
>>570 arguments.callee は strict mode で使用できないから、使う機会は増えるでしょうけどね。
575 :
573 :2011/02/10(木) 00:22:11 ID:???
即答ありがとうございます。 回避方法を探してみましたが、phpを使う方法は、他サイト側のアドレスが固定していないといけないので、 サーフィンは不可能です。 何かいい方法はないでしょうか?
優しく教えてあげるかそっとしておきましょう
>>573 あなたは
>>3 FAQの一番最初の奴すら読んでないわけだ。
どっかよそへ行けば?
PHPのcakephp,zend frameworkみたいな javascript版フレームワークをおしえてください 用途はPHPが使えないサーバでフレームワークでサイト作りたいからです SEOなどは気にしないので楽にサイト作れればかまわないのです
>>579 サーバーサイドJavaScriptが使える環境はあるのか?
クライアントサイドで動くものです javascriptがオフの環境は見れなくてもかまいません
クライアントサイドならフレームワークっつったらJqueryみたいな基本的にDOM操作の ライブラリってことになるんだろうけど、フレームワークに何を求めてるんだろう?
えっと、579でも書きましたが ようはjavascriptだけでMVCがやりたいってことです
>>583 クライアントサイドでは無理です。サーバサイドでやってください。
開発効率上げるだけなら zen-coding が便利だけど毛色が違うか。
クッキーにデータ保存したいってこと?
ここで聞いたのが間違いでした 自分で開発して作ります
>>584 ワラタwwwwwwwwwwww
MVCについて勉強してこいwwwwww
煽ることに意義を見いだしている人がいるな 知っているなら回答してあげればいいのに
今日一日悩んでいます… Google Ajax Feed APIを使用して表示したhtmlを JQueryを使って操作できないのでしょうか? APIを使わず最初から記述しているhtmlをjQueryで操作できるのは確認しました。 APIを使用し吐き出したhtmlへのCSS適応も確認できましたが、 jQueryが一切適用できません。 これはそのまま操作できないと受け取ってよいでしょうか?
質問が漠然としてて回答できない
>>592 質問の意味が分からないJavaScript素人に聞いておりません
>>591 シンプルに答えるなら「出来る」になるかと。
申し訳ありません。どう簡略化したものか… Google Ajax Feed Apiを使用したjsファイルで htmlstr += ’<div class=”hide”>ホニャララ</div>’; を入れて container.innerHTML = htmlstr; でhtml内 <div id=”feed”> </div> に表示し、html内の <button>ぷっしゅ</button> をクリックした時に#hideのdisprayプロパティを noneに変更するjQuery $(document).ready(function(){ $(”button”).click(function(){ $(”div#hide”).css(”display”, ”none”); }); }); を適用させたいのですが、適用できなかったのです。 長くなって申し訳ありません。
> htmlstr += ’<div class=”hide”>ホニャララ</div>’;
> を入れて
↓
htmlstr += ’<div class=”hide”>ホニャララ</div>’;
とhtml文をhtmlstrに入れて
文章力足らずですね…すみません。
>>594 できる…のですね?
ありがとうございます!
それだけわかれば、がんばれます。
さらに悩んでみます!
hideがidじゃなくてclassなら#hideじゃなくて.hide とりあえずこうでは まだ動かないと思うが
わかりにくいんだけどbuttonは最初から表示されてるのか?
>>597 そうですね、最初はclassを使用していたのですがダメでした。
また、
feed > divや
feed divとセレクタ―の部分を変えてもダメでした。
一点、エンコードの違いが原因では…と疑っています。
html → SHIFT-JIS
feed js → UTF-8
jQuery js → UTF-8
>>598 本当にすみません、buttonはGoogle Ajax Feed Apiを記述したjsファイル
を使用し表示しているので、最初から…では無いです。
>>595 API は全く関係ないので、簡略化したHTMLを書いてその中でテストしてみればいいと思う。
ここで質疑応答するならミニマムなコードを書いて
http://jsbin.com/ にでもUPしてもらえると助かる。
>>600 おお、こんな所もあるのですね!
度々申し訳ありません、まだ勉強し始めなので
簡略化するのに時間がかかると思いますが、簡略化し
そちらにUPしたいと思います。
ありがとうございます!
602 :
500 :2011/02/10(木) 15:32:11 ID:???
あ、ひょっとしてイベント定義が出来てないんじゃないか? document.readyState === "complete" の後に feed が描画されたら上手くいかないはず。
603 :
600 :2011/02/10(木) 15:32:54 ID:???
すまん。>601 == >600 ね。
clickをliveにしたら捗るよ
605 :
600 :2011/02/10(木) 15:36:18 ID:???
>602 == >600 だった。OTL $(document).click(function (event) { var button = event.target; if (button.tagName !== 'BUTTON') return; $("#hide").css("display", "none"); }); これでどうだろう?
読み込んだhtml表示 ↓ ここでscript処理 イベント設定 ↓ ボタン描画(イベント設定されてない) みたいになってんじゃね? まだ描画されてないbuttonにイベントは設定できない
>>604 さんのを見た瞬間跳ね回りました!
ああ、liveを忘れていました…
clickをliveに変更した所希望通りの動作をしてくれました!!
感謝感激雨霰です!
>>592-
>>606 の皆さん本当にありがとうございました!
皆さんに書き込んで頂いたコード等しっかり読み、
勉強させていただきます!
いつか他の方に手助けをできるようがんばります。
<div id=test> あ い う </div> このdivの中身を削除というか消去したいのですが var test = document.getElementById('test'); test.の後をどうしたらよいでしょうか? test.innerHTML="";じゃなくてちゃんと消去するのがあればいいのですが
>>608 childNodes
removeChild
カラにするだけでいいなら while (elem.firstChild) elem.removeChild(elem.firstChild);
611 :
608 :2011/02/11(金) 17:52:08 ID:???
あざっす! その場合 test.removeChild(test);で良いでしょうか?
ブックマークレット作ろうとしてるんですが これを javascript:(function(){ var url = location.href; alert(url); })() こんな感じにすることってできないんですか javascript:(function(){ var url = function() { return location.href; } alert(url()); })()
>>612 何がやりたいか説明してもらった方が勘違いがなくていいのだけど
そもそも何をしたいブックマークレットで、何でlocation.hrefを関数化したいの?
>>613 内容はただのサンプルで、要は関数を使うことはできないのかという趣旨の質問です。
$(function(){})ってjqueryとかで見るけどこれってどうなってるんですか?
619 :
618 :2011/02/11(金) 20:10:21 ID:???
>>617 いやいや、すみません。
そんな高度な話をしているわけではないんです・・・
もう一度書き直しますけど、
こういうことはできないのかってことです。
javascript:(function(){
var hoge = function() {
return 'piyo';
}
alert(hoge());
})();
あ、自己解決しました functionの閉じたあとに、;が足りなかっただけみたいです・・・ どうもお騒がせしました
>>620-621 こういう書き方もあったり。
javascript:(function (hoge) {
alert(hoge());
})(function () {
return 'piyo';
});
一、トラブルを再現する最小限のサンプルを貼れる者
読書感想文はもう結構 お前自身がどういった問題に直面し、どのように考え、どうやって解決したのかを語ってみろ
アラートを出すクリップボードにコピーするボタンを実装しようと、有名なZeroClipboardを 利用したのですが、alertとあわせるとアラートが出なくて困っています。 具体的には 以下で出て欲しいのですが、 <input type="button" id="copybtn" onclick="alert('コピー完了')" > ZeroClipboardを利用するとアラートが出なくなります。 わかる方がいらしゃれば何か良い方法をご教示頂ければと思います。
> 一、トラブルを再現する最小限のサンプルを貼れる者 これを守る人少ないな…。
今日は全員合格だったじゃん
<div id = a>〜</div> <div id = b>〜</div> a =○○getelement〜 b =○○getelement〜 replaceChild(b,a); でaをbに置換したあと、このbをaに戻す事ってできます? aのHTMLを記述して入れるとかじゃなくてaのノードをまた入れるみたいな
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head> <title>sample</title> <script type="text/javascript"> var a, b, c, toggle = true; function init(){ a = document.getElementById("a"); a.parentNode.removeChild(a); b = document.getElementById("b"); c = document.getElementById("c"); } function chg() { if(toggle) { c.replaceChild(a,b); } else { c.replaceChild(b,a); } toggle = !toggle; } </script> </head><body onload="init()"> <div id="a">A</div> <blockquote id="c" style="background: yellow"><div id="b">B</div></blockquote> <div><button onclick="chg()">change</button></div> </body></html>
631 :
Name_Not_Found :2011/02/12(土) 09:35:28 ID:xFFm3+yB
xmlでgetAttribute等を使うとき htmlと同様に大文字小文字を問わず取得したい場合はどう書けばいいですか? var attribute = node.getAttribute("HOGE") || node.getAttribute("HOGe") || node.getAttribute("HOge") || ...; みたいなことを簡潔に書きたいです
>>630 ありがとうございます!参考にしまチュ!
>>631 HOGE と HOGe が別の要素であることをわかってる?
全てを hoge に統一したいなら toLowerCase() で。
ごめん。要素じゃなくて属性だった。
>>633 >>631 は既に大文字小文字が入り混じってる環境で全て取得したいんじゃない?
それだと正規表現が良いかと
636 :
633 :2011/02/12(土) 13:29:34 ID:???
>>635 なるほど。Node#attributes を for 文で回せばいけるね。
637 :
631 :2011/02/12(土) 13:54:11 ID:???
どうもありがとうございます 正規表現とループでやってみます
safariについて質問です
ブログを作成してるのですがインラインフレームとか
AのフレームからBのフレームを操作できないっていう話を見かけたのですが
http://nex.xrea.jp/?s=214 これって「インラインフレームからそのフレームが置いてある所の操作はあきらめてください」
ってレベルなんでしょうか?
フレームからフレームの操作はsafariやgooglechromeじゃ絶対に不可能なんでしょうか?
>>638 Bのフレームに入れる要素はBのドキュメントのcreateElementなり
で作ったものでなければいけない、というのを守ってないだけに
見えるんだけど。作るところが書いてないから分からないが。
比較的読みやすくて勉強になるお勧めライブラリ教えてもらえませんか?
>>641 ライブラリの割に、配列をfor( in )で回すという、まともに動かなくなる可能性のある
非推奨の記述を多用しているのがちょいと気になりますね。
>>638 確かグーグルって物凄いフレーム嫌いだからフレームから親フレームや別フレームの操作できないんじゃない?
試しに別フレーム操作するDOM作ってみたら見事に動作しなかった
>>644 jqueryって読みやすい方なのかな。
行数が多くて読むのしんどい気がするんだけど
俺そんな熱心なjavaスクリプターじゃないからかもしれないけど jqueryとかアジャックス使わないなぁ 慣れてない上新しいの学ぶのメンドクサくて読みづらい
俺はJavaScriptは趣味でやってるたちだから自作じゃないライブラリは使わないとかスマホのメモ帳で作る(mjd)とか縛りいれてた でも近頃ライブラリもかなり充実して当たり前になって来てたから自分でもあんまり縛っても意味ないかなってずっと思ってた だけど、HTML5の流れが来て最近はその縛りが結構役に立ってると感じるよ HTML5はいろんな事ができるから必然的にコードが長く奇抜になってくるけど そこでメモ帳でとにかく短いコードを他作ライブラリ無しで書いてた事が生きた 今じゃあ(普通に書いてきた人)誰よりも短く読みにくくスマホでもハイパフォーマンスなコードがかける自身がある だから言っておきたいけど、やっぱり趣味でやるんだったら人に頼ったりしないでひたすら我流でやるべき そしたら自分に必要なレベルまでの力は必ず身につくから エッセイ〈終〉
かっけー!
> 読みにくく そこは自信をもたなくていい。恥ずべき点だから
650 :
Name_Not_Found :2011/02/13(日) 19:49:48 ID:BQ1JFtM3
>>647 >ひたすら我流でやるべき
英語と同じで、下手でも、毎日使っていると、上手くなる。
通訳や機械翻訳は便利だが、英語は上達しない。
>>646 熱心なJavaScripterじゃない人ほどjQuery使った方が楽になると思うよ。
記述量が半分以下になる。
>>650 一定のレベルまではそれで良くても、ずっと「ひたすら我流」のままではいかんでしょ。
体系的にまとめられた知識と、一般に「良い習慣」とされる書き方は身に付けるべき。
一般的なプログラミングの作法を意識してないと、Per○忍者みたいな末路が待ってる。
>>645 依存関係が強いから読みにくいと感じるのかも。始めに全体像が掴めれば、苦もなく読めると思う。
>>647 「我流でやったこと」よりも「ネイティブコードで書いてきたから生きた」って印象だな。
その点ではライブラリを読んでテクニックを盗むのは悪くないと思う。
jQuery を使ったコードはあまり好きじゃないけど、jquery.js のソースを読んだことは為になったから。
>653 もちろんライブラリ読んだりするのは大事だと思うよ ただどういう仕組みになってるかわからないうちに便利なものバンバン使うのは 本当の力が身につかないようでダメな気がしてね とは言っても我流じゃあやっぱり学校で専門的に習って来た人よりは基礎力とか組み方のバラエティー少ないだろうから 最近はJAVAとか他の言語もいろいろやって柔軟に考えれるようつとめてる
655 :
Name_Not_Found :2011/02/14(月) 18:23:00 ID:Ze1IK1xe
何行かある文字列から、特定の文字を含んだ行だけを取得したいのですが上手くいきません。 str.replace(/^(.*moji.*)$/gmi, '$1'); ↑では駄目でした。 どなたかご教授お願いしますm(__)m
>>655 function sample1 (string) { return string.split(/\r\n|[\n\r]/).filter(function (value) { return value.indexOf('moji') !== -1 }); }
function sample2 (string) { return string.match(/.*moji.*/g); }
console.log(sample1('..moji..\rfoo\nhoge\nmoji test'));
console.log(sample2('..moji..\rfoo\nhoge\nmoji test'));
>>655 その置換は「マッチした箇所をそのままにする」という操作w
>>656 .(ドット)はキャリッジリターンにもマッチするよ。
変数aaaに
http://www 〜〜〜
と、アドレスが入っていてiframeのsrcにaaaを入れて使いたいんですが
どうやったら出来ますか?
あれやこれやずっとやって一向に解決できない・・・
660 :
655 :2011/02/15(火) 12:03:54 ID:y3//typi
ありがとうございました
>>659 srcに代入するだけで普通に更新されたけど
my = my || {}; これってmyが空ならmyをオブジェクトに初期化するって 意味でいいのかな?
ok
664 :
Name_Not_Found :2011/02/15(火) 22:15:40 ID:Z6Y1RVCO
うん 「空ならオブジェクト」って理解するのもいいけど ||の演算を理解したほうがもっといいかも
>>664 そういう演算子は検索できないから困るんだよね
>>663 >>664 ありがと
||演算子は、どちらか一方が真なら真を返すって
説明しか見当たらないんですよね
1 || 0 // 1 0 || 2 // 1 false || 3 // 3 0 || "4" //"4" (function(){alert(1); return false;})() || (function(){alert(2); return false;})() // alert(1) alert(2) (function(){alert(1); return true;})() || (function(){alert(2); return false;})() // alert(1) 真のほうを評価して返す(偽だったら次のを確かめる・真なら次のは無視。) 代入式でない場合はa || bはif(!a) bと同じ。 逆にa && bはif (a) b。 aがtrueの時のみbが使われる。
>0 || 2 // 1
> 0 || 2 // 1 ?
ごめんw1234って途中で変えたけど、結果の部分変えてなかった。
a = b || c とかはPHPだと中身じゃなくてtrueかfalseしか返さないからそっちから先に覚えた人は迷うかも 自分は逆で迷った
>>671 ちなみに、Firefoxをstrictモードで使うと、bが定義されていない場合は
定義されていない式を参照したという警告を吐く
>>672 strict mode でなくても ReferenceError になるような。
var result; // hoge is not declared try { result = (hoge != undefined)? 'defined': 'not defined'; } catch ( e ) { result = 'error'; } document.writeln('direct = '+result); try { result = (typeof hoge != 'undefined')? 'defined': 'not defined'; } catch ( e ) { result = 'error'; } document.writeln('typedef = '+result); try { result = defined(hoge)? 'defined': 'not defined'; } catch ( e ) { result = 'error'; } document.writeln('function = '+result); こういう事かな。 複数の環境で、確かに typeof hoge と undefined の比較だとエラーが出ない。
>>676 あー、3番目の関数を忘れた。
function defined(x) {
return (typeof x != 'undefined');
}
678 :
Name_Not_Found :2011/02/16(水) 12:25:20 ID:2T3sIBK/
IE8 における XDomainRequest() が上手くいきません 以下の XHTML を開発者ツール(F12)を開いた状態で表示しましたが、エラーも表示されません XMLHttpRequest() だとコンソールに example.html の内容が表示されます XDomainRequest() はどのように記述すれば利用出来るのでしょうか <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>foobar</title> </head> <body> <script type="text/ecmascript"> var req = new XDomainRequest(); req.open('GET', './example.html', true); req.onreadystatechange = function(){ if(req.readyState == 4){ console.log(req.responseText); } } req.send(null); </script> </body> </html>
>>678 レスポンスヘッダで XDomainRequestAllowed: 1 を返してる?
そもそも自分のドメインにアクセスするならXDomain要らないし・・・
680 :
678 :2011/02/16(水) 13:11:12 ID:2T3sIBK/
>>679 ありがとうございます。はい、XDomainRequestAllowed: 1 を返しています
readyState == 3 の状態で responseText を取得するために、XDomainRequest() を使いたいんです
XDomainRequestにonreadystatechangeってあるの? MSDNには記述が無いみたいだけど。
682 :
678 :2011/02/16(水) 18:43:35 ID:2T3sIBK/
>>681 すみません、クロスドメイン等の機能が加わっていること以外は XMLHttpRequest と同じだと思っていました
以下のように書き換えてみましたが、空文字列しか取得出来ません
どのように修正するのが正しいのでしょうか
var req = new XDomainRequest();
req.open('GET', './example.html');
setInterval(function(){
console.log(req.responseText);
}, 2000);
req.send(null);
683 :
662 :2011/02/16(水) 21:00:59 ID:???
ありがとうございます
・左辺、右辺の真の方の値を返す
・左辺が真なら右辺無視
よく理解できました
>>671 ご想像の通りPHPから来て混乱しました
>>683 > ・左辺、右辺の真の方の値を返す
> ・左辺が真なら右辺無視
いや、違うって。
>>673 ちゃんと読んでやれよ。
・左の式を評価した値をBoolean型に変換
・trueなら左の評価値を返す
・falseなら右の評価値を返す
右辺が真かどうかなんて関係ないって。
>>682 感での解答だけど多分こんな感じだと思う。試してはいないw
var req = new XDomainRequest();
req.open('GET', './example.html');
req.onprogress = function() {
console.log(req.responseText);
};
req.send(null);
漢字・・・まぁいいか・・・・
>>667 横だけど、すげー理解した!
今まで三項演算子とかは余裕だったんだけど、
この真偽値分岐が理解できなかったんだよね
ああ、マンモスすれぴぃぃぃぃぃいいいいぃぃぃいいい
>>687 例えば
z = x || y;
というのがあった場合、
if (Boolean(x)) {z = x;} else {z = y;}
または
z = Boolean(x) ? x : y;
というのと同じ結果になる。
これでx、yにブール型が入っていたら論理和となるし、
662のように書くことで「空ならデフォルト値を設定」にも使える。
a || b || c || d
とさらに連結させたら、Boolean()に入れたときtrueとなるようなものを
a→b→c→dの順に探していって最初に見つかったものを返す。
つーことですね。
690 :
673 :2011/02/17(木) 00:53:04 ID:???
691 :
678 :2011/02/17(木) 02:19:47 ID:FLBYMmDd
>>685 ありがとうございます
試してみましたが、コンソールに反応はありませんでした
<html> <head> <title>タイトル</title> </head><div id="tada"> <frameset cols="120,*" id="set"> <frame src="ita_test.html" id="kasu" /></div> <frame src="sure_test.html"> </frameset> <noframes> </noframes> </html> この時document.getElementById('tada')の値はnullになって <frameset cols="120,*" id="set"> <frame src="ita_test.html" /> の部分が取得できないのですがこのdivみたいにグループ化して取り出すことってできませんか?
できません
いやできる
>>692 あのさあ、framesetとdivを一緒に書いたらいけないって知らない?
validなHTMLが分からん奴は来るなと
>>1 に書いてあるでしょ。
終了タグ足らんし要素が入れ違いになっとるぞw
俺がこの中じゃ比較的javascriptやjqueryに精通してるかもしれないけど divじゃなくて他の使えばいくらでも同じようなのできっぞ
誰だよ
>>692 > <frameset cols="120,*" id="set">
> <frame src="ita_test.html" />
> の部分が取得できない
日本語でおk
いやいやいや
>>701 だからblockとframeset共存できないんだってば。validなHTML分からん奴は
来るなって言ってるのに…とにかくクロスブラウザで動く例貼って見せられない
のなら2度と書き込まないで欲しいわ。
HTMLマスター(笑)の集まりだとは思ってるだろうよ
DOM操作できるためにはHTMLがinvalidでないことは当然前提でしょ。
だから
>>1 に書かれているわけで。
>>1 の当該項目を削除したい
というのなら今その議論したら?洩れは反対だけど削除賛成な人は
どれだけいるのかな?
何にしてもとにかくHTMLスレでやった方がいいんじゃないかな
>>707 だから「取れない」理由がHTMLが正しくないからというので終了なら
それでいいんだけどね。正しくないHTMLを直さずに何とかするなんて
無理な話だからさ。
>>708 >>692 はJavaScriptの問題じゃないからHTMLスレに行けと言ったつもりだった
JavaScriptの動作にHTMLがvalidかは関係ないだろ
doctypeとか省略していきなり<foo><fool></foo></fool>とか怪文書書いても暗黙的に<html><body>が生成されてちゃんと動作する
そうしたら
>>1 の
> 一、正しい(validな)HTMLとは何か知っており書ける者
は何のためにあるのか分からんな誰か説明して
何言ってんだこいつ
>>710 構造が正しくないとDOMツリーがどういう状態になってるか判らんし、
例えば同じIDが2つあったらどうなるか実装によって変わったり、
いろいろ不都合があるでしょ。
>>711 分からないならレスするなよ
>>712 <foo>A<fool>B</foo>C</fool>だったら
<foo> → <foo></foo>
<foo>A → <foo>A</foo>
<foo>A<fool> → <foo>A<fool></fool></foo>
<foo>A<fool>B → <foo>A<fool>B</fool></foo>
<foo>A<fool>B</foo> → <foo>A<fool>B</fool></foo> // 一致しないタグで無視される
<foo>A<fool>B</foo>C → <foo>A<fool>B</fool>C</foo> // fooはまだ閉じてない
・<foo>A<fool>B</foo>C</fool> → <foo>A<fool>B</fool>C</foo> // 一致しないタグで無視される
・idが被った時は最初のidが返される
な感じでルールが決まってたと思う、どこに書いてたかは忘れたが。
>>713 何でパースエラー?XMLだと当然エラーですよw
喧嘩腰か、また荒れんのか……
仕様書読んで来い。あとここでやるな
>>716 読みましたが
* 認識できない要素があった場合、ユーザエージェントは、内容のレンダリングを試みねばならない。
* 認識できない属性があった場合、ユーザエージェントは、当該属性定義全体(すなわち、属性とその値)を無視しなければならない。
* 認識できない属性値があった場合、ユーザエージェントは、デフォルトの属性値を用いねばならない。
* 宣言されていない実体があった場合、この実体を文字データとして扱わねばならない。
> 一、正しい(validな)HTMLとは何か知っており書ける者
これが必要な理由は何ですか
わざわざvalidじゃないHTMLに固執する理由がわからん
認識できないもなにも、開始タグと終了タグが入れ違ってるだろう >これが必要な理由は何ですか 基礎がわかってないと発展は難しいから……か、1+1 と同じで説明するのは難しいな
ぐだぐだ言ってねぇでお前は質問にだけ答えてりゃいいんだよ
ここの住人なら反論してくると期待したのにがっかりだよ doctypeから</html>まで丁寧に書いてくれる人もいるのに validではないhtmlだからって頭の中でパースエラーを起こして答えれない回答者って
もうわかったから JavaScript質問スレでオレオレ言語の議論はやめてくれ
結局、validを知らない奴の相手するのはとってもやってられんから というのが理由かなー。で、HTML直したら別に問題なく取れるよね。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html><head> <title>sample</title> <script type="text/javascript"> function test() { alert(document.documentElement.innerHTML); } </script> </head> <frameset onload="test()"><frame src="t0.html"><frame src="t0.html"> <noframes></noframes></frameset> </html>
724 :
Name_Not_Found :2011/02/17(木) 16:52:17 ID:S18upD2+
>>717 >> 一、正しい(validな)HTMLとは何か知っており書ける者
>これが必要な理由は何ですか
お前みたいにわかってる奴はいいんだよ
だけど、わかってない人が質問者の場合、いちいちHTMLの事から説明しなきゃ
ならなくなっちゃうでしょ
それは面倒すぎるし、そもそもスレ違いじゃん
って言う理由だよ
言わせんな恥ずかしい
それで結局、 > 一、正しい(validな)HTMLとは何か知っており書ける者 を削除することに賛成な人は何人?洩れ反対。 賛成: 0票 反対: 1票
もういい
>>703 のような勘違いさんがいなくなってほしいだけ
賛成: 0票 反対: 2票
何回スルー検定実施すりゃ気が済むんだよ
賛成: 0票 反対: 12票
それはそうと。いつもテンプレ論議が時間切れになるので、早めに始める という話があって。いま730だから、今始めたらどうだろうか。テンプレの ここを直したらとかあれば(前出たことの繰り返しでもいいので)どうぞ。
<option value="n">n</option> n=1〜30で最後の30をselectedにしたいのですが、 <select id="hoge"> <script> for (var i = 1; i <= 30; i++) { if (i == 30) { documenr.writeln('<option value="'+i+'" selected="selected">'+i+'</option>'); break; } documenr.writeln('<option value="'+i+'">'+i+'</option>'); } </script> </select> みたいにちょっと不細工で効率も悪そうですがJavaScript内で完結させるか、 <select id="hoge"> <script> for (var i = 1; i < 30; i++) { documenr.writeln('<option value="'+i+'">'+i+'</option>'); } </script> <option value="30" selected="selected">30</option> </select> とするのではどちらがいいと思いますか?
前者 自分ならこうかな var sel = document.createElement("select"),opt = document.createElement("option"); sel.setAttribute("id", "hoge"); for(var i = 1, _opt = null ; i <= 30; i ++){ _opt = opt.cloneNode(false); _opt.appendChild(document.createTextNode(i)); _opt.setAttribute("value", i); sel.appendChild(_opt); } _opt.setAttribute("selected", ""); document.body.appendChild(sel); delete sel, opt, _opt, i;
733 :
731 :2011/02/17(木) 19:16:58 ID:???
>>732 コードまで出していただいてどうもありがとうございます。
これはまた本格的ですね。
見慣れないコードが含まれてるのでじっくり読ませて参考にさせていただきます。
>>732 > delete sel, opt, _opt, i;
意味不明 & 何してるつもりなのか教えて
名前空間の掃除じゃないのかな。
何スレも前の話だけど
>>2 を修正する話はどうなった?
確か新テンプレも上がってたはずだけど
発掘でいいんで修正案だれか貼ってください。具体例がないと検討できない。
738 :
Name_Not_Found :2011/02/18(金) 02:21:03 ID:uPqkm/Gp
俺も1案出したはずなんだが思い出せん 結構前だよなー
739 :
Name_Not_Found :2011/02/18(金) 02:31:58 ID:uPqkm/Gp
あった
http://hibari.2ch.net/test/read.cgi/hp/1264164226/ 俺の書いたのこれだ
【質問を書く上で】
1)「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを
簡潔に説明してください。ただ「動きません」ではわかりません。
脳内おれおれ用語は混乱のもと。一般的な用語を使うようにしてください。
2)調べたこと・試したことを書いてください。
OS、ブラウザ、バージョンを必ず明記しましょう。
質問箇所(行数、エラー内容)を簡潔に。
何のエラーかわからなければ、エラーメセージをコピペ。
IE8、Firefox、SafariのJavaScriptコンソールを活用しよう。
3)説明が困難なら、ソースを貼ってください(要点を整理して)。
コピペだけで動くと試しやすいです。
エラーの場合は再現可能なように。
長い場合(1レス以上)はアップロードする等工夫を。
4)閲覧者の迷惑になる質問は回答されません。
別窓を多数開く、閉じる・戻る・クリックを妨害、画面占有、など。
「分かんねえの?」と煽っても無駄です。
5)「初心者なので」「初心者だから」「初心者ですみません」とか
書かない方が無難です。
知らない、できない、わからない、まちがい、は誰にでもありますから。
XML spryで東京を探し出すのは <span spry:when="'{ado}'.search("東京") != -1">{zaza}</span> で、{zaza}に結果が出ますが、("東京")にjavascriptの変数を入れたい場合はどうやって書けばいいのですか??
741 :
740 :2011/02/18(金) 03:28:57 ID:???
自決src=でいけました
javascriptとcssで作成したwebサイトが
IE8とGoogle Chromeでは正常に表示され
Firefoxで表示されることなくフリーズしてしまいます。
このサイトで調べてみると時にエラーが見当たりません
http://www.javascriptlint.com/online_lint.php いろいろ試しているとjavascriptの記述を消すと
Firefoxでも表示されます。
別のjavascriptとcssで制作したhtmlを開くと正常に
表示されます。同じよな症状の人はいますか?
>>739 ありがとう。3) なんだけど、「説明が困難なら」というところが
ちょっと気になる。困ったちゃんはだいたい「自分はちゃんと説明
している」と勘違いしてるから。問題が起きる例を貼れともっと強く
言いたい感じがするけどいかが。
>>742 もちろん、あなたのページにまずいとこがあるからに決まってます。
ぜひ、問題が起きる最小限の例を作って貼ってください。そしたら
見させていただきます(笑)。
オライリージャパン[JavaScritp the GoodParts] 64P〜65Pに 下の例文が出てきますが、これ具体的にどんなふうに使えばいいんですかね? ----以下例文---- シンプルなイベント処理の機能を、他の任意のオブジェクトへ追加する関数。 onメソッド、fireメソッド、そしてプライベートなイベントレジストリを追加する。 var eventuality = function(that){ var registry = {}; that.fire = function(event){ var array, func, handler, i, type = typeof event === 'string'?event : event.typel; if(registry.hasOwnProperty(type)){ array = registry[type]; for(i =0; i < array.length; i += 1){ handler = array[i]; func = handler.method; if(typeof func === 'string'){func = this[func];} func.apply(this,handler.parameters || [event]); } } return this; }; that.on = function(type, method, parameters){ var handler = {method: method, parameters: parameters}; if(registry.hasOwnProperty(type)){registry[type].push(handler); }else{registry[type] = handler} return this; }; return that; }; eventuality(); 任意のオブジェクトを引数にeventualityを呼び出すことで、それらのオブジェクトに イベントハンドリングを行うメソッドを追加することができる。
746 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 09:28:01 ID:SPZ6dzM2
荒らしに救いの手を伸べる神は存在しません
748 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 09:49:08 ID:SPZ6dzM2
はぁ・・・
749 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 09:50:20 ID:SPZ6dzM2
速く答えろカス
早く消えろクズ
ファイルの読み書きならFileAPIが仕様としてある
752 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 09:55:11 ID:SPZ6dzM2
FileAPIのほかになにある 1のやつおし得てください
>>745 var obj = eventuality({});
obj.on('click', function(a, b) { alert(a + b); }, [1, 2]);
obj.on('click', function(e) { alert(e.type); });
<p onclick="obj.fire(event);">click!</p>
こういうことなんだろうけど、バグあんだろこれ
else {
// registry[type] = handler;
registry[type] = [];
registry[type][0] = handler;
}
そのまんま映したのか?お前のミスか?
754 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 10:29:31 ID:SPZ6dzM2
javascriptでURLから取得して読み込めるみたいなlwpみたいなやつある?
755 :
745 :2011/02/18(金) 10:40:48 ID:???
>>753 なるほど!そんな感じに使えばいいのか
だいぶ悩んだんで助かりました!
ありがとうございます
>> registry[type] = handler;
確認したけど、やはりそう書いてありますね
756 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 10:46:56 ID:SPZ6dzM2
びっくりまーくウザいですよ?w
>>752 document.getElementById('RecordedShowsBoxList');
758 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 11:03:35 ID:SPZ6dzM2
perlでやってみますからいいよw
>758 俺もCGIはperl派だがperlとJSって敵対する関係じゃなくてむしろ仲間だろ HTML5でJSがいろいろできるようになって基礎処理の部分ではwebにおいてperlは不必要になりつつあるが、オンライン処理系はむしろこれからどんどん必要になってくる ちょっかい出しに来る暇があったらそれに役立つモジュールとかライブラリとか開発しろ
抜き出すのは当該箇所を取り出してループで回りながらパターンで マッチして必要な箇所を抜き出すんでしょ。Perlと同じだと思うけど。 ユーザにファイル保存さすのなら、保存したい情報を表示したページなり 別窓なりが現れて、それを自分で保存してねとかが簡単では。
>>760 二行目が読解できない。
基礎処理ってのは何のことを言ってるの?
サーバサイドのこと?だとするとオンライン処理って部分はPerlとJSどっちを指してるのか・・・
今までは単なる出力のために使われてたけどこれからはWebベースのアプリケーションってことでしょ HTML5はHTML4と違って単なるHTMLの規格じゃない
>>760 > HTML5でJSがいろいろできるようになって基礎処理の部分ではwebにおいてperlは不必要になりつつあるが
Perl のどんな技術が JavaScript で代替できるのか、具体的に書いてもらえると助かる。
HTML5 は革新的だと思うが、Perl を代替できる機能っていうのは思いつかない…。
766 :
760 :2011/02/18(金) 13:10:04 ID:???
今まではPC内ファイルのバイナリデータ一つJSで扱うのも formでアップしてサーバー側でtxtとかに書き出したのをAjaxとかで取得したりしなくちゃいけなかったり、 Cookieじゃ足りないからサーバー側にデータをAjaxで保存したりと、 ちょっとJSで大きなことをしようと思ったらCGI側にいろいろ任せなきゃいけなかったけど これからはオンラインゲームとか掲示板みたいなシステムに集中できるよねってこと
767 :
765 :2011/02/18(金) 13:16:39 ID:???
>>766 なるほど、それを基礎処理と称していたのか。理解した。
768 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/18(金) 13:37:17 ID:SPZ6dzM2
#!/usr/bin/perl
use strict;
use utf8;
use LWP::Simple;
use
HTTP::Request::Common; use HTML::TagParser;
use Encode;
print "Content-type:text/html; charset=utf8\n\n";
my $url="
http://www.ustream.tv/user/garden5/videos ";
get($url) ? my $con=get($url) : print "Error\n";
my $list=[split /\n/,$con];
my $put;
foreach (@$list){
push @$put,$1 if($_=~/<a href=\"(\/recorded.*?)\">/)
}
print "$_\n" foreach (@$put);
> get($url) ? my $con=get($url) : print "Error\n"; 0点、perlスレへお帰り。
770 :
mai :2011/02/18(金) 13:56:09 ID:8xpfuh2V
771 :
745 :2011/02/18(金) 14:19:29 ID:???
なんかレス抜けてるけど忍者でも出たか?
>>771 初版第1冊で確認したけど、打ち間違えでしょう
>>745 のコードでいうと、
前から5行目
event.type が event.typel になってる
正 type = typeof event === 'string'?event : event.type;
後ろから6行目
handler を囲む角括弧が抜けてる
正 }else{registry[type] = [handler];}
最後の行
用例を書こうとしたんだと思うけど、パラメータなしの呼び出し eventuality(); いらない
775 :
774 :2011/02/18(金) 19:06:54 ID:???
オレ使用例(動作確認済み)。こんな感じで使うもんだと思います。 var obj = {}; // obj に on メソッドと fire メソッドを追加 eventuality(obj); // on でイベント設定 // イベント名、メソッド、配列に入れたメソッドのパラメータ obj.on("calc", function(a, b){alert(a+"+"+b+"="+ (a+b));}, [1, 2] ); obj.on("calc", function(a, b){alert(a+"-"+b+"="+ (a-b));}, [5, 3] ); obj.on("greeting", function(a){alert(a);}, ["aloha."] ); // すぐに実行されないのを確認するためalertを入れてます // このalert閉じた後 fire で実行します alert("do something else"); // fireでイベント発生 // "calc"イベントに設定したものだけが実行される obj.fire("calc");
お前らオライリーのjavascriptパターンは買ったのか?
なんかPerl忍者っていうやつより、しょぼいねここ 768のソースなんて、適当に書いたやつだろ そんな、変なコード載せなさそうだし
> get($url) ? my $con=get($url) : print "Error\n"; Error処理が変だと思ったけど たんなる、テストだとおもうよ 適当にErrorって出力させたくてさ いちいち0点って言い方やめたほうがいいんじゃない?
>>7789 たぶん、0点っていったやつはPerl忍者よりカスなんでしょうね
スレタイ読めないやつよりマシだと思うぜ
>>778 getってうrlが同じならキャッシュを返してくれるの?
二度も取得するのが0点なんだろわかれよ
死ね
きっと print "Error" unless get($url);ってやりたかったんだよ 時間帯的に頭がボーっとしてそうだしね
print "Error" unless $con=get($url);
いつまでやってんだガキども死ね
もうだめだ 名誉を傷付けられた
0点っていうの謝れ
謝れ
とても香ばしいスレですね
以前この板で 「JavaScriptでprototype使うのは邪道で、危険なプログラミング」 みたいな事を言われて面食らったんですが 何故邪道なのか、分かる方居ますか? 「メモリ節約の為にもprototypeを活用すべき」 という話をあちこちで聞いて、そう思っていたのですが 何かデメリットがあるのでしょうか。 かなり前にどこかのスレでこの話をされて、理由を聞いたんですが 「話にならん、自分で調べろ」と言われ 調べても今ひとつわからず、放置して2年くらい経ちます。
prototype使うなってプロトタイプベース言語全否定じゃん
>>793 prototype汚染のことをいってるのかな。
該当URLを出せる?
>>795 いや、もう大分前の事な上に何のスレだったかも忘れてしまって・・・
当時まだJavaScriptを使い始めたばかりの頃で
「オブジェクトにメソッドとか追加するにはprototypeを使えば良い」
知ったばかりにもかかわらず、そんな事を偉そうに書き込んだところ
>>793 のような状況になったような感じです。
prototype汚染 でぐぐると色々出ますね。
for・・・inで列挙されるとか、まぁそれはそうですよね
普通に使ってもいいと思うけどなー 複数人で開発するときに使うなら話し合ってドキュメント書いておけば問題ないしょ
自分で作ったオブジェクトには、メモリ節約できるならprototypeは積極的に使っていいと思う。 それ以外は微妙。 ─── 俺は使っているけどね。
799 :
793 :2011/02/19(土) 01:11:00 ID:???
>>797-798 なるほど、既存のオブジェクトにprototypeで何かしら追加したうえに
それが複数人開発で、他の人が知らないとバグの原因に成る
という感じですかね。
多分この事だったんでしょうね。
prototype拡張にも2通りあって、 ・ユーザ定義のオブジェクトを拡張する ・ネイティブオブジェクトを拡張する 前者は気にしなくていいと思う。 後者は話し合いが必要かな。 特に Object.prototype や Array.prototype は注意しないと他の人の時間を食いつぶすことになる。 その辺、全部わかっている人ばかりなら問題ないと思うけどね。
C言語みたいな感じで、Arrayを拡張した子クラスを作れませんか?
C言語ってクラスあったっけ…?
var MyArray = Array; 完
804 :
Name_Not_Found :2011/02/19(土) 07:38:12 ID:l5LbRssE
>>739 1年も前だったかw
次スレも近いんで、
>>743 の意見を反映してちょっとリライト
【質問を書く上で】
1)「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを
簡潔に説明してください。ただ「動きません」ではわかりません。
脳内おれおれ用語は混乱のもと。一般的な用語を使うようにしてください。
2)調べたこと・試したことを書いてください。
OS、ブラウザ、バージョンを必ず明記しましょう。
質問箇所(行数、エラー内容)を簡潔に。
何のエラーかわからなければ、エラーメセージをコピペ。
各ブラウザのJSコンソールを活用しよう。
3)質問は、あなたが思っているほどうまく説明できていないことが多いです!
要点を整理してソースを貼ってください(エラーは再現できるように)。
1レスで収まらない場合は、アップロードしてください。
http://jsbin.com/ や
http://jsdo.it/ なども活用してください。
4)閲覧者の迷惑になる質問は回答されません。
別窓を多数開く、閉じる・戻る・クリックを妨害、画面占有、など。
「分かんねえの?」と煽っても無駄です。
5)「初心者なので」「初心者だから」「初心者ですみません」とか
書かない方が無難です。
知らない、できない、わからない、まちがい、は誰にでもありますから。
var myArray = {}; myArray.__proto__ = Array; ?
>>804 よいんだけど、「そのまま貼って試せる、エラーが再現するソース」
という言い方でどうかな。現状だと動かない断片を貼られてもめるとか
心配じゃないですか?
>>806 それだと、
var hoge = new myArray();
とかやってArrayで出来た書き方が出来ないんじゃないの?
3)うまく説明できない時は、ソースを貼ると回答されやすいです。
要点を整理して、エラーが再現するソースを貼ってください。
1レスで収まらない場合は、アップロードしてください。
http://jsbin.com/ や
http://jsdo.it/ なども活用してください。
res739.replace(/(?=セージ)/, 'ッ')
function myArray() { var self = Array.apply(null, arguments); self.__proto__ = myArray.prototype; return self; } myArray.prototype = { constructor: myArray, last: function last() { return this[this.length - 1]; } }; var a = new myArray(1, 2, 3); alert(a.last());
>>810 おお、動いた ...と思ったけど
IE8では a.last() が「オブジェクトでサポートされていないプロパティまたはメソッドです。」
ってエラーになるね。
1コ忘れてた。 function myArray() { var self = Array.apply(null, arguments); self.__proto__ = myArray.prototype; return self; } myArray.prototype = { __proto__: Array.prototype, constructor: myArray, last: function last() { return this[this.length - 1]; } }; var a = new myArray(1, 2, 3); alert(a.last()); alert(a.reverse()); alert(a.last());
IEでは__proto__がサポートされてないはず?
>>811 IE は __proto__ 使えないからね。9 以降は知らんけど
815 :
745 :2011/02/19(土) 15:32:18 ID:???
>>801 function MyArray(){}
MyArray.prototype = new Array;
817 :
816 :2011/02/19(土) 15:57:03 ID:???
>>817 そのコードもリンクも全然関係ないよ。
ちなみに Object.create でもちゃんとした配列オブジェクトは作れない。
Proxy.create で完全エミュレートは可能。
819 :
816 :2011/02/19(土) 16:28:50 ID:???
>>818 > そのコードもリンクも全然関係ないよ。
すまん。もう少し詳しく。
・IE9 は Object.getPrototypeOf をサポートしない
・>816 は >801 の要件を満たさない
こういう意味?
「>816 がコンストラクタを再現してない」ならわかるが…。
var a = new MyArray(1, 2, 3);
console.log(a.join(', ')); // ""
JavaScriptライブラリで継承できるようにしてるのあるから そのソース見てみればいいのでは? でもC言語ってことは継承の話でないのかな?
822 :
Name_Not_Found :2011/02/19(土) 20:36:38.24 ID:FA12auiN
おれおれライブラリのArray __proto__なしで書いた function _Array(){ var Wrap = this; this.arr = []; [].push.apply(this.arr,arguments); var Substance = this.arr; for(var i in this)(function(prop){ if(Wrap[prop] instanceof Function)(function(name,method){ Substance[name] = function(){ return method.apply(Substance,arguments); } })(prop,Wrap[prop]); })(i); return this.arr; };
823 :
822 :2011/02/19(土) 20:39:28.49 ID:FA12auiN
書いた当時に人に聞いて教えてもらったのをもとにして そこに俺のへっぽこぶりが重なって、ちょっと変だなあ
824 :
Name_Not_Found :2011/02/19(土) 22:10:15.02 ID:pkszutki
document.allの有無でIEとそれ以外を振り分けるやり方は フィーチャーディテクション以前の古いやり方ですか? 今でもフィーチャーディテクションが使いにくい場合によく使われる手法ですか?
826 :
824 :2011/02/19(土) 22:27:19.55 ID:???
どうもありがとうございますm(_ _)m
document.all の判定は if (document.all) { ; } else { ; } と if ('all' in document) { ; } else { ; } で全く違う。
>>819 何がわからないのか分からない…。
>>816 はコンストラクタもそうだけど、そもそも配列じゃないから
length の機能が抜けちゃってるし
Object.getPrototypeOf は話題にかすってもいないじゃないか。
830 :
Perl忍者 ◆M5ZWRnXOj6 :2011/02/19(土) 23:12:33.20 ID:0Er2YwGM
プログラミング言語にレベルってないの? ゲームみたいにあったらいいのに Perlレベル10までしかないし あれよりいいの考えようぜ Maxレベル75くらいね Perl忍者lvl50 みたいなかっこいい
レベル付けて欲しいならどうぞ Perl忍者lvl1
832 :
Perl忍者lvl1 ◆M5ZWRnXOj6 :2011/02/19(土) 23:23:09.01 ID:0Er2YwGM
今日から、人の質問に答えるごとにlvl1ずつあがりますね 経験値は2乗ずつになってくかんじです マゾい仕様です 暴言をはくとカルマがさがりますね 悪ってつきます いまはニュートラルです がんばります
>>828 JSでロールオーバーの是非とか実装はともかく、普通はこうじゃないか
function RolloverItem($elem) {
this.$elem = $elem;
};
RolloverItem.prototype = {
setEvent: function() {
var that = this;
this.$elem.bind('mouseover focus', function() {
that.over();
}).bind('mouseout blur', function() {
that.off();
});
},
over : function() {
this.$elem.attr('src', this.$elem.attr('src').replace(state.off, state.on));
},
off : function() {
this.$elem.attr('src', this.$elem.attr('src').replace(state.on, state.off));
},
preload : function() {
$('<img>').attr('src', this.$elem.attr('src').replace(state.off, state.on));
}
};
$('a img[src*="_off."]').each(function() {
var ins = new RolloverItem($(this));
ins.preload();
ins.setEvent();
});
835 :
816 :2011/02/20(日) 00:28:44.95 ID:???
>>829 ありがとう。
どうもいろいろと勘違いしていたようだ。勉強が必要だなー。
ちょっとすれ違いかもしれないですが、すいません。 動的にDIV要素を作成して、画面上に出現させてるんですが、 スクロールした際にその要素を画面上に固定させることできますか。 スクロール量を足して移動するのではなくて、 背景画像をfixedにしてるような感じの状態にしたいのです。
>>836 CSSの機能にposition: fixedというのがあるから。ただし古いIEは非対応。
839 :
Name_Not_Found :2011/02/20(日) 10:37:29.86 ID:h/cHkT0R
good parts の言う「newを使うな」って var F = function(){ this.prop = "value"; } って関数があって var f = new F(); ってすれば問題ないけど var f = F(); ってすると、グローバルにpropっていう変数が出来ちゃうってこと? そりゃあたりまえだし、そんなの杞憂だと思うんですが… 「レンガで頭をぶん殴ると死にます。だからレンガは使うな」って事ですよね? ぶん殴らなきゃいいだけなのに この考え方って主流になるの?
開発の規模
>>834 this がいらない代わりにメモリの無駄遣いになる。
var ins = RolloverItem($(this)); でも動くと思うけど…。
F()の中でthisがglobal objectかどうか調べて global objectなら警告だけ出して何もしないとか どうだろうか。オブジェクトを作るところにnewが 使われているというのはコードを読むという点からは 好ましいことだと思う。
別案 function F() { if(this === window) { return new F(); } ... }
>>841 ありがとうございます。
オブジェクト指向というかコンストラクタからインスタンスをつくり、
プロパティやメソッドを継承させる方法に悩んでいます。
普通に
var Constructor = function(){
this.hoge = XXX;
this.huga = YYY;
}
Constructor.prototype = {
ZZZ : function(){ ・・・ }
}
var instance = new Constructor();
のほうがいいのでしょうか?
今回はたまたま簡単なロールオーバーなのですが、
例えば膨大なデータを扱うアプリケーションだったりした場合には
どういったロジックで組み立てていけばいいのか苦慮しています。
$(function(){
$("img.rollover").mouseover(function(){
$(this).attr("src",$(this).attr("src").replace(state.off, state.on))
}).mouseout(function(){
$(this).attr("src",$(this).attr("src").replace(state.on, state.off));
}).each(function(){
$("<img>").attr("src",$(this).attr("src").replace(state.off, state.on))
})
});
ロールオーバー程度ならこれだけですむのはわかるのですが、
結局は大規模開発以外、オブジェクト指向の組み立て方は必要ないのでしょうか?
>>845 どっちでもいいよ
ひとつひとつ抽象化していったほうが複雑なアプリケーションを作りやすいってだけ。
>>846 ありがとうございます。
アプリケーション開発時に、
・扱うデータの量や行う処理
・処理速度やメモリ効率
・のちに拡張していきやすいか
・バグやエラーをフィックスしやすいか
を勘案し、継承のさせ方も判断しなさいということでいいでしょうか?
>>847 846 じゃないけど、最終的には後々時間が経ってそのコードを組んだことさえ忘れて再びそれを読む機会が出来たとき(あるいは同僚の誰かがそれを読んだとき)に理解できるか、だと思う。
どんな組み方をしてもいいんだよ。自分で理解できる自信があるなら。
その多寡は第三者である俺には判断できないが、俺なら
>>845 は抽象化しないで普通に書く。
このぐらいのサイズなら一目で全体を把握できるだろうからね。
>>848 レスありがとうございます。
JavaScriptは他の言語に比べて縛りが弱く、いろんな表現ができるのが特長でもあり、
それが初心者である僕にとっては迷いが生じる元となっていました。
>>833 さんはじめ、
>>839 さん?
>>841 さん、
>>846 さん、
>>848 さん
お時間を割いてご意見いただきありがとうございました。
<div id="test1" style="height:3000px; overflow:auto;"> <div id="test2" style="height:4000px; border:2px solid black;"> aaa </div> </div> <script type="text/javascript"> document.getElementById("test1").focus(); document.getElementById("test2").focus(); //--></script> 「↓↑」キーでbodyのスクロールバーじゃなくてtest1のスクロールバーが動くようにしたいです。 このソースのscriptでどうにかならないかなと思ったんですが、無理でした。 マウスホイールでスクロールしたり、内側を一回クリックすれば、内側が先に動くんですが、キーボードだけで動かすことは可能でしょうか? onkeydownで↓↑を検知して移動じゃなくて、”内側を一回クリック”と同じことをjsでやりたいです。
IE なら click メソッド、それ以外なら dispatchEvent してみれば。 意図した通りになるかどうかは知らんけど。
853 :
850 :2011/02/20(日) 19:25:03.76 ID:???
>>851 ,852
レスサンクス。
実はIEはdocument.getElementById("test1").focus();で希望の動作しているのです。
chrome/firefoxで動かなくて・・・
hashのも試してみましたが、chromeでは動かなかったです。
positionがabsoluteじゃないと、topやleftの値を取得しようとしても、 nullになっちゃうんですか?
Firefox と Chrome で動いたけど、汚い・・・・。 <script type="text/javascript"> var test2 = document.getElementById("test2"); test2.style.position = "relative"; var btn = document.createElement("button"); btn.style.position = "absolute"; btn.style.opacity = 0; test2.appendChild(btn); btn.focus(); //--></script> btn は remove できないし。
>>855 できた!
たしかに美しくないけど、自分用だからいいかな。
ありがとう〜
nooooooooooooooooooooooooooooooooobがたくさん集まってますね Nooooooooooooooob消えろNoob
>>832 > 暴言をはくとカルマがさがりますね
> 悪ってつきます
あと2回質問にこたえれば レベル3だよ
>>860 悪にもlvlをつけてくれ(ニュートラルに戻る目安になる)
Perl忍者lvl-1(ナメクジ並)
Perl忍者lvl2(悪lvl1)
Perl忍者のレベルは、初心者以下のマイナスでいいよ。
暴言を吐くだけでlvl(なぜか読めない)が上がるのはPerl忍者だけ
866 :
Name_Not_Found :2011/02/20(日) 22:58:23.36 ID:0nV/2yZO
>>842 遅レスすまんこ
つまり、その関数が意図せぬ使い方をされる可能性を
考慮せよってこと、なんだよね?
広い意味ではわかるんだけど
実際それを説いているのがグローバル潔癖症の人なのが
すこし解せない感じです
MasterというオブジェクトのprototypeにSlaveというオブジェクトを追加して Slaveのprototypeにmethodというメソッドを追加する この考え方に何か問題などありますでしょうか? 問題ない場合、以下のような感じで良いんでしょうか? function Master(){} Master.prototype.Slave = function(){} Master.prototype.Slave.prototype.mesod = function(){}
var master = new Master(); var slave = new master.Slave(); slave.method(); て使うならおk. でもmasterの情報をslaveにも持たせたいんだよね? Master.prototype.newSlave = function(n){this._slave[n]=〜}とか。
869 :
867 :2011/02/20(日) 23:39:41.43 ID:???
>>868 >でもmasterの情報をslaveにも持たせたいんだよね?
そうそう、そんなんです。
もうvar slave = new master.Slave(master); で渡せばいいんじゃねw
872 :
867 :2011/02/21(月) 00:30:54.62 ID:???
var master = new Master(); var slave = new master.Slave(); この書き方にどうしても気持ち悪さを感じるんだが
874 :
Name_Not_Found :2011/02/21(月) 00:54:04.87 ID:Y9eUT5JX
>>867 自分は以前はこんなふうに書いてまいした
function Master(){
var m = this;
this.slave = new Slave();
function Slave(){};
Slave.prototype.method = function(){
// Master は m で参照できる
}
}
最近はこのように渡しています
function Master(){
this.slave = new Slave(this);
}
function Slave(master){
this.master = master;
}
Slave.prototype.method = function(){
// Master は this.master で参照できる
}
Function.prototypeをObjectから参照できて 逆もできるんですけど、これってどういうことでしょうか? ちなみにObject.prototype←Arrayは参照できて 逆は出来ません
>>876 例えば
Object.prototype.animal = 'cat';
alert(Function.animal)//cat
ObjectとFunctionを入れ替えても参照できる
で、
Array.prototype.animal = 'cat';
alert(Function.animal)//undefined
これは参照できなくて
ArrayとFunctionが逆なら参照できます
階層の上下が関係してるんですかね
878 :
Name_Not_Found :2011/02/21(月) 04:01:31.54 ID:Y9eUT5JX
>>877 Objectオブジェクトは他全員の素なんよ
879 :
877 :2011/02/21(月) 04:42:22.00 ID:???
>>878 となるとこれも参照できるのは何でなんでしょうか
Function.prototype.animal = 'cat';
alert(Object.animal)//cat
階層が同じだから・・・?
>>874 slaveを2つ以上ほしい時とか動的に追加したい時に無理じゃね?
あ、その時は普通に
Master.prototype.newSlave = function(){return new this.Slave(this);}でいいか。
var slave = master.newSlave();
>>880 typeof Object === "function"だから。
簡単なゲーム作りたいと思ってるんですが、 アニメーション用に複数の動作の画像を分割して一つの画像にしたものがあるんですが、 どうにかして、分割して表示する方法ないでしょうか? イメージとしてはある画像の指定した部分だけを表示するイメージです。
>>881 divの中に画像を入れてdivの大きさを表示したい大きさに設定して
スクロールバー無しに指定して中の画像の位置を適切な位置に設定
すればいいんじゃないの。全部CSSでできる気がするけど。
もうすぐ900。とりあえず
>>2 の改訂案をマージしたけどこれでよい?
テンプレの他の奴は改訂案ないのね?(900から始めてもこれまでの例から
見て間に合わないだろうけど一応)
【質問を書く上で】
1)「何を、いつ、誰が、どこに、なぜ、どのように」動作させたいのかを
簡潔に説明してください。ただ「動きません」ではわかりません。
脳内おれおれ用語は混乱のもと。一般的な用語を使うようにしてください。
2)調べたこと・試したことを書いてください。
OS、ブラウザ、バージョンを必ず明記しましょう。
質問箇所(行数、エラー内容)を簡潔に。
何のエラーかわからなければ、エラーメセージをコピペ。
各ブラウザのJSコンソールを活用しよう。
3)うまく説明できない時は、ソースを貼ると回答されやすいです。
要点を整理して、エラーが再現するソースを貼ってください。
1レスで収まらない場合は、アップロードしてください。
http://jsbin.com/ や
http://jsdo.it/ なども活用してください。
4)閲覧者の迷惑になる質問は回答されません。
別窓を多数開く、閉じる・戻る・クリックを妨害、画面占有、など。
「分かんねえの?」と煽っても無駄です。
5)「初心者なので」「初心者だから」「初心者ですみません」とか
書かない方が無難です。
知らない、できない、わからない、まちがい、は誰にでもありますから。
いいと思う
>>881 CSS background-image, background-positionを調べてみ
if (($("aaa").value !=undefined) && ( $("bbb").value !=undefined)) aaabbbともに浮動小数が入ってる状況なのにif文がスキップされてメダパニです ツールで見るとちゃんと括弧内はtrueなのです javascript苦手です・・・
>>886 jqueryだよね。まぁ、if文がスキップされんならundefinedが返ってきてるんだろ。
とりあえず、$関数に渡すセレクタ文字列についてまずは調べなさい。
jquery使いなら基本中の基本ね。苦手もクソもない。
background-positionなんてあったんですね! これでいけます!どうもありがとうございました!すいませんでした!
>>887 ありがとうございます。
ソースにもろvalue="123.56"って入れてます。
$関数外してdocument.getElementById("aaa").value見ましたが、数値データが入ってます。
しかも==に条件文を変更すると()内はfalseなのにif文の{}の中にステップが入ります。
ifの判定が反転してるような反応です。
ぜったいものすごくバカなことやってると思うのですがなにから疑えばいいかわかりません。
IDなら#aaaだろ。
jQueryなら
>>890 prototype.jsなら他の部分でおかしな事やってる。
892 :
867 :2011/02/21(月) 11:59:11.70 ID:???
>>874 ありがとうございます、やりたい事が上手く実現できました。
>>889 すこし落ち着け。条件式がfalseになったif文に進入するなんてありえんから。
undefinedと比較する意味からしてよくわからんぞ。空文字を調べたいのなら
if (($("#aaa").value != "") && ($("#bbb").value != "")) ...
if ((document.getElementById("aaa").value != "") && (document.getElementById("bbb").value != "")) ...
>>889 まずそれぞれに何が入ってるか調べなよ
どっちの条件でif文に入ってるかもわかってないんだろ?
console.log使えないならとりあえずalertでもいいから
alert($("aaa"))
alert($("aaa").value)
alert($("bbb"))
alert($("bbb").value)
って実行したらそれぞれ何になるわけ?
あと、$使ってるなら何のライブラリ使ってるのかも書かないと無駄にレスが増える
$=function (){ return document.getElementById.apply(document, arguments) } これと予想
>>889 すまん、おれもすこしボケてる。
>>893 訂正
if (($("#aaa").val() != "") && ($("#bbb").val() != "")) ...
jqueryならvalメソッドだな。undefinedになっちまうわけだ。
>>890 >>891 なんかそのへんですね。
#をつけたらnullが帰ってきました。idみつからないみたいです。これはおかしい。
要素はid="aaa" name="aaa"となってます。
>>893 ですよね。
サーバーサイドが最初からvalueをセットしてる場合とそうでない場合(value="")の切り分けがしたかったのですが・・・
参考にしてテストしてみます。
>>894 choromeのjavascriptコンソールでそれぞれ検証してみます。
メインのライブラリはjQueryです。前任の書いたライブラリも読み込んでます。
ライブラリが競合してる可能性があるので一つづつ外して検証してみます。
>>895 $の宣言の競合ですか?
考えられます。前任の書いたコードには$が一切使われてないので競合はないだろうと気軽にjQureyを入れて
みましたが、ライブラリのどっかに隠れてるかも知れません。
おかげで切り口がいくつか見つかったので検証をつづけようと思います。ありがとうございました。
>>896 うまく動きました。
ありがとうございました!!
900 :
佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/21(月) 13:34:35.13 ID:5aGSRhWX
javascriptってどうやってブラウザでテストしてる? ブラウザみたり エディタもどったりめんどくさいんだけど ねえ?どうすればいいの?どうすればいいの?
ggrks
902 :
Name_Not_Found :2011/02/21(月) 14:04:47.26 ID:fq3W4dAu
エディタで書いてブラウザで見る以上に楽な方法は思いつかんなあ あ、パソコン2台以上あるとまあまあ楽よ
F12キー押してみろよ
>>900 ・エディタ用モニター
・ブラウザ用モニター
・その他用モニター
3画面くらいあると便利
コンパイルも要らないしテストは超楽じゃないか?
905 :
Name_Not_Found :2011/02/21(月) 17:59:17.16 ID:NebKgDXY
ディスプレイいっぱいあるとクビが痛くなるがな(´・ω・` )≡( ´・ω・`)
便乗だけど 複数のIEでテストするのは不便 複数のIEを共存させる系のソフトは不安定だし仮想環境は面倒だし 複数のIEでのテスト方法はどうするのがいいのか気になる
IETester
IETester一択
適当に作った要素をbody要素の上におきたいんだけど、 俺はいつも、 tmp=document.getElementByTagName("body"); tmp[0].appendChild(test); とかってやってるんだが、ほかにいい方法ない?
document.body
>>911 うわ!こんなのあったんですねorz
ありがとうございました・・・
913 :
佐々木優子lvl2(悪) ◆M5ZWRnXOj6 :2011/02/22(火) 00:26:18.62 ID:k/DZ89Oc
IETesterはバグが多いからIECollection使ってる
document.getElementById("foldable").style.display="block"; document.getElementById("close").style.display="inline"; document.getElementById("open").style.display="none"; という記述でdisplayに値をいれて、次に document.getElementById("foldable").style.display=""; document.getElementById("close").style.display=""; document.getElementById("open").style.display=""; という記述はdisplayの値を消すのですか? この場合CSSで設定したdisplayの値が入るのですか?
javascriptにユニットテストってないの?
画像のクロスフェードさせたいんですが、良い方法が思いつきません。 要素を重ねる方法って、ある場所に配置した要素の上に、 position:absoluteで絶対座標を指定するしか方法ないですよね? なんか良い方法あるなら教えていただけると助かります。
良い方法ですね
>>916 ブラウザのデフォルト値になるだけ
HTML上では
<div id="foldable" style="display:block">
<div id="close" style="display:inline">
<div id="open" style="display:none">
から
<div id="foldable" style="">
<div id="close" style="">
<div id="open" style="">
になる
>>916 空文字を代入したときにデフォルトスタイルシートに戻る仕様はどこにも定義されていない。
つまり、実装依存なので空文字を代入すべきではない。
実装依存といっても主要ブラウザ全てそうなんだから デファクトスタンダードだからいいんだよ
質問なんですが、違うスクリプト間でも変数の値は共有できるのでしょうか? <script> var test = "テストだよ"; </script> <body> <script> document.write(test); </script> </body> このようにしても、何も表示されません。 testの内容を表示させるにはどうすればいいのでしょうか?
You should study it from the base
</font><font color="#FF9900">正の整数</font><br> ウェブサイト上のソースで上記のように書かれている文の 「正の整数」と書かれた部分だけを自動で取得したいのですが どのようなメソッドを使えばいいでしょうか 画像の取得はdocument..getElementsByTagNameを使ってできたのですが その形では無い上記の文章はgetElementsByNameやgetElementByIdでも上手くできませんでした 勉強不足で上記のでもできるならごめんなさい
はい、それは尤もだと思いますが・・・ 自分はクッキーかhtml5のlocal storage機能を使えば上の問題は解決できると思いますが これはいろいろな場面で使うので、簡単な方法があればぜひ知りたいのです グローバル変数は同じスクリプト内でしか有効でないと思うので、これは無理ですし・・・
>>925 fontもgetElementsByTagName使って要素の参照はできるから
それのinnerHTMLとか見ればいいよ
無問題なんだがうまく行かない「そのまま試せる例」を貼ってみそ。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head> <title>sample</title> <script type="text/javascript"> var test = 99; </script> </head> <body> <pre><script type="text/javascript"> document.writeln(test); </script></pre> </body> </html>
>>926 グローバル変数は、同じページ内なら有効のはずだよ
> クッキーかhtml5のlocal storage機能を使えば って書いてあるから別ページなんだろう
932 :
Name_Not_Found :2011/02/22(火) 16:21:03.40 ID:hJ8G5JXI
>>926 なにか激しく勘違いしていないか?
<script>
var a = "what is the global scope?";
</scirpt>
<script>
alert(a);
</scirpt>
と
<script>
alert(a);
</scirpt>
<script>
var a = "what is the global scope?";
</scirpt>
とか。
すいません、
>>926 です。
大きな勘違いをしていました、異なるスクリプトの間でも、グローバル変数であれば値を共有できていました。
しかし、問題はそこではありませんでした
<script>
function kei(){
var kento = "kentyan";
}
document.write(kento);
</script>
このように、function内で宣言した変数が、function外では使えません。
皆様を混乱させるような書き込みしてすいませんでした、
上記のスクリプトを実行したところ、何も表示されませんでした。
何度も質問してすいません
スコープが違うから_
おいお前。 関数内でvarつけたら、ローカル変数。 varつけなかったら、グローバル変数になるってことおぼえとけ。 関数外ならvarつけてもグローバル変数だ。 これだけ覚えとけ。じゃあ頑張れよ。
すみません、みなさん、勉強になりました。
>>936 さんのスクリプトを少し変えて
<script>
var kento;
function kei () {
kento = "kentyan";
}
kei();
document.write(kento);
</script>
として、一度functionのkeiを実行すると、うまくkentoの値が表示されました
ノートに書いて復習しておきます、ありがとうございました。
新書のJavaScriptパターンの紹介で JavaScripを200%使いこなすとか書いてあるんだけど 100%使いこなすよりも2倍使いこなす状態が想像できない
>>938 当社比
昔から、「○○を256倍使うための本」というもっと嘘くさい本があってだな・・・
javascriptってキーの同時押し検知できないんですか・・・? 例えばAとBが両方押されてるかをチェックしたいんです。 あるオブジェクトの移動を斜めに移動させたくて困っています。
onkeydownでAとBが押し下げられたか検知 onkeyupでA or Bが上がったらflag[A or B]=false keydown時に両方がtrueなら同時押しされた。ってできるはず。
ボタンを押すと表示されている数字が1ずつ大きくなっていきます <head> <script type="text/javascript"> //サブルーチンはここに記述 function increment(obj) { var i = obj.value - 0; //ボタンの表示文字列を整数に i++; if(i < 10) obj.value = "0" + i; else obj.value = i; } </script> </head> <body> <INPUT TYPE="button" VALUE="00" ONCLICK="increment(this)"> </body> でi=obj.value - 0の-0ってなんですか?i = obj.valueでも問題なく作動 しますが、何か意味があるのですか?
>>944 詳しくはしらんけど、コメントに書いてある通り -0 がなかったら変数
i が文字列になってしまって、その後の計算では内部でいちいち数値に
変換しているんじゃないかな。なくても動くけど、効率が悪そうだと。
-0 ってのはわかりにくいので、var i = Number(obj.value); とした方が
いい気がする。
>>944 -0する事で型を数値型にしてる保険じゃないの?
文字列でもi++通るなら-0はいらないか
var i = obj.value// - 0;
i += 2; // 増分値の変更に弱い
var i = obj.valueでも問題なく作動するのはi++でも型変換が行われているからね。
型変換のルールを
>>944 が分かってるとも思えないから - 0、あるいは* 1でもいいから
あらかじめ型変換をしておいた方が良い。
944です。 型変換のルールであらかじめ変換しておくための-0 ということなんですね。 javascriptは他の言語のに比べ本がほとんど本屋になく 技術評論社の本とインターネットで検索して強しています。 すごく勉強しずらいですね。みなさんはどのように勉強したんですか?
本とインターネット
何しきってんの?
混乱が生じないために、このスレの合意と思われることを確認しています。 過去に 950 超えて建てたら旧スレの残りが使われないとか並行で混乱とか あったので 975 で建てることが慣例となってきています。 テンプレも含めて、内容に異論があるならぜひ今どうぞ。 そして仕切りたいなら私は別に仕切りたくないのでぜひどうぞ。
954 :
Name_Not_Found :2011/02/23(水) 12:36:33.24 ID:vPXEySrU
テンプレ議論やろうやろうっていって
いっつもグダグダになっちゃうしね
>>883 だって、元ネタが書かれたの1年前だしw
つーわけで
>>952 はgj
80 スレ以上消費してきてまだテンプレなんてものがオナニーに過ぎないことがわからんのかい
読む人は読むし、読まない人は読まない だから無いよりはあった方がまし だからテンプレがオナニーって言うのは言い過ぎ
いっそ外部にwikiでも作れと
サウンド再生について、ベストな方法を教えてくれ。
>>953 じゃあ、私が仕切ります
次スレ建てる人はお好きにどうぞ
web開発者の集まってる板なんだからgithub pages使えよ
じゃあテンプレ有無も含めて好きにするということで?
>>957 そもそも過去スレ全集とかからして、外部に用意しても結局2ちゃんの
方が長続きしている。1000レス中の6、7レスだから別に入れてあっても
いいと思うね。テンプレ要不要の投票しますか?洩れ「要」。
要: 1票 不要: 0票
さあどうぞ。
function hoge(){ var str = ["abcde","abcde","abcde"]; str.push(str.splice(0,1)); document.open(); document.write(str[0].slice(0,3) + "<br>"); document.write(str[1].slice(0,3) + "<br>"); document.write(str[2].slice(0,3) + "<br>"); document.close(); } 過去の入力履歴を一定数格納する配列を作っているのですが、 pushした配列要素にだけsliceが効きません。 置換を続けて位置がずれていっても、pushやunshiftで追加した要素はずっとsliceが効きません。 何がいけないでしょうか?
str.splice(0,1)の返り値はArray んで、Arrayにもsliceメソッドがあったからエラーを吐かれなかった。 str[2].slice(0,3)てのは["abcde"]を返している。(slice(1,3)にすると[]) toString()では要素数が1なのでそのまま[0]がかえってくる。
一度吐き出した物をまた戻そうとしたら、前とちょっと違ったものになってて、 拙者、何かおかしくなっちゃったでござる、の巻。
入力履歴を格納なんていわれると身構えちゃうな
画像検索の履歴が個人情報と紐付けられたら生きてらんない><
>>967 なるほど!解決しました!
ありがとうございました。m(__)m
今回は700台から始めたんで、ちゃんとテンプレ論議はできてると 思うな。次スレはそれに従ってたてて、次スレの中でまた頃合いを 見て「テンプレ廃止」の議論するということでどうですかー。
974 :
678 :2011/02/24(木) 16:38:17.62 ID:E+OKUWW9
XDomainRequestAllowed ではなく、Access-Control-Allow-Origin を返すようにしたところ
>>682 のコードで機能するようになりました
失礼致しました
975 :
678 :2011/02/24(木) 17:33:53.80 ID:E+OKUWW9
Canvas3D、WebGL関係の質問はこちらでよろしいでしょうか?
JavaScriptで書かれたコードをスクレイピングするライブラリってないですか? コード中においてDOM操作が何回行われるか静的に解析したいのですが
スコープがいまいち理解できません var foo=fumction(){ var a=3,b=5; var bar=fumction(){ var b=7,c=11; //この時aは3,bは7,cは11 a+=b+c; //この時aは21,bは7,cは11 }; //この時aは3,bは5,cは未定義 bar(); //この時aは21,bは5 //ここでbが5になるのがよくわからないです }; bar()が実行されてbが7になるけど 実行後でfoo()の中だからbが5になるって事ですか?
var b=としてる所でそのbはその関数より下の階層でしか使えないからかな・・・ var a=3,b=のbとvar b=のbは変数名は同じでも別物
bが7のところで外のbを参照したいときはどうすればいいの?
varを付けない。
>>981 中の関数でvar bを宣言しない。名前を変える。
ところでfumctionって何だ まともに動くソースを貼れよ。
>>978 それはスクレイピングというのかなあ。
DOMNodeInserted や DOMSubtreeModified を見ればチェックできると思う。
985 :
まる :2011/02/24(木) 23:19:06.32 ID:9ZCg3Jzw
はじめまして、唐突ですが、質問及びお願いです。 今現在、商用のHPを製作しているのですが、javaでの計算式が必要で、私自身が時間がなく勉強することが出来ません。 計算式ですが、ある料金の単価を出す式です。 合計金額が¥5775で、基本料金が¥1500(絶対に掛かる料金)、使用量が10の場合・・・ 5775÷1.05(消費税)=5500 5500−1500(基本料金)=4000 4000÷10(使用量)=400(単価) この¥400(単価)を出せる式をHPで使用したいのですが・・・ お客様に入力してもらうのは、合計金額と使用量で、単価を出す感じです。 計算式のjavaを製作していただき、HPに設置するまで面倒見ていただける方に¥10.000振り込ませていただきます。HPに設置は私がHTMLでやりますので、わからなかったらご指導ください。 式の製作後に¥5.000、HPに設置後に¥5.000払います。 私の身分は設置するHPの版下と、名刺を出して身分を明かすので安心です。住所は埼玉県の川口市なので近隣に住んでる方なら嬉しいです。 信用できる方なら誰でも良いので、是非御連絡ください。よろしくお願いいたします。 makeupgasアットmail.goo.ne.jp *メルアドのアットを変換して送ってください。
━━━本スレに書く事を許される者は以下の通り━━━━━ 一、JavaScriptはJavaとは別物であると知っている者 一、自ら学んでJavaScriptコードを書く意思を持つ者
こういった所でなくmixiのそう言うのを頼むコミュみたいなのとか それなりの場所でやりなよ・・・
うーん、今日もまたスレ立て規制で新スレ建てられません。すみませんが建てられる方
お願いいたしたく。
>>2 のかわりに
>>883 ということになったのでそこもよろ。
& エラーメセージ ↓ エラーメッセージ
990 :
979 :2011/02/24(木) 23:39:48.09 ID:???
>>990 スコープチェーンでググると幸せになれる
スレ立てるか
"おつ";
IEでのlocation.hrefってbaseタグのhrefの値は考慮しないんでしょうか? Firefoxではbaseタグのhrefを基準にしたURLに相対パスで飛んでくれるのですが、 IEでは無視されてしまいます。
996 :
Name_Not_Found :2011/02/25(金) 01:33:15.38 ID:bjXHEjUx
釣りっしょ。
マジだったら怖いわ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。