のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,836人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.93 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    51 : Name_Not - 2011/11/17(木) 19:30:14.82 ID:??? (+49,-30,-202)
    <div>
    <span><b>1</b></span>
    <span><b>2</b></span>
    <span><b>3</b></span>
    </div>

    htmlの中にこういう構造のタグがあるとします
    spanに挟まっているbタグを全てobjに格納したいのですが
    var obj = document.getElementsByTagName('span').getElementsByTagName('b');
    alert(obj.length); // 3って表示して欲しいのにエラーになります

    求めたいことは仮にhtmlが上のだけだとして
    var obj = document.getElementsByTagName('b');
    alert(obj);// 3
    の結果です
    htmlはいじれません
    どのようにしてオブジェクトをとることができますか?
    52 : Name_Not - 2011/11/17(木) 19:42:49.39 ID:??? (-1,-29,-17)
    getElementsByTagNameは配列を返すからとかじゃね
    53 : Name_Not - 2011/11/17(木) 19:47:34.89 ID:??? (+4,-29,-3)
    querySelectorAllでも使えば
    54 : Name_Not - 2011/11/17(木) 19:57:53.90 ID:??? (+4,-30,-297)
    >>51
    <div>
    <span><b>hoge</b></span>
    <span><b>fuga</b></span>
    <span><b>piyo</b></span>
    </div>

    <script>
    window.onload = function() {
    var obj = document.getElementsByTagName('span')[0].getElementsByTagName('b');
    alert(obj.length); // 1
    alert(obj[0].innerHTML); // hoge

    var obj2 = document.querySelectorAll('span > b');
    alert(obj2.length); // 3
    alert(obj2[0].innerHTML); // hoge
    alert(obj2[1].innerHTML); // fuga
    alert(obj2[2].innerHTML); // piyo
    };
    </script>
    55 : Name_Not - 2011/11/17(木) 19:59:33.80 ID:??? (+3,-26,-3)
    >>51
    forループ使ってb要素を集めるとか
    56 : Name_Not - 2011/11/17(木) 20:37:46.10 ID:??? (+7,-30,-155)
    >>51
    オレも考えたぜ

    <body>

    <div>
    <span><b>1</b></span>
    <span><b>2</b></span>
    <span><b>3</b></span>
    <span><b>4</b></span>
    </div>

    <script type="text/javascript">
    var obj=document.getElementsByTagName('span'),t=0;
    for(var i=0;i<obj.length;i++){
    for(var s=0;s<obj.length;s++){
    if(obj[i].childNodes[s]){t++;}
    }
    }
    alert("<b>タブの数="+t);//t=4となる
    </script>
    </body>

    しかし、何でかalert(obj.childNodes.length);でエラーなんだよな
    何でなんだ?
    57 : Name_Not - 2011/11/17(木) 20:48:01.09 ID:??? (+10,-30,-161)
    >>56
    getElementsByTagNameで返されるのはNodeListだから。
    childNodesはNodeに属するプロパティ。
    childNodesはNodeListとして構成される。
    なのでobj.lengthは通る。

    こういった場合の解決方法は>>53-54で使われているquerySelectorAllか
    document.evaluateを使ったXPathを使った方法かになるんじゃないかな。

    どのバージョンまでサポートされてるかは忘れたけど、
    document.evaluateはIEでの対応が微妙だったはず。
    58 : Name_Not - 2011/11/17(木) 21:05:36.91 ID:??? (+35,-30,-205)
    >>57
    なんかオレの知らない方法だな、イジッテたら分かったが、
    obj[0].childNodes.lengthで1個目のspanの子ノードの数が取得
    できるって分かったから、obj[i].childNodes.lengthで
    iを0からobj.lengthの値までforで回すと子ノード<b>タブの数
    が計算できるな、二重にforを使う必要がなかったな。

    <body>
    <div>
    <span><b>1</b><b>1</b</span>
    <span><b>2</b></span>
    <span><b>3</b></span>
    <span><b>4</b></span>
    </div>
    <script type="text/javascript">
    var obj=document.getElementsByTagName('span'),t=0;
    for(var i=0;i<obj.length;i++){
    t=t+obj[i].childNodes.length;
    }
    alert("<b>タブの数="+t);//t=5と出る
    </script>

    </body>
    59 : Name_Not - 2011/11/17(木) 22:17:38.16 ID:??? (+52,+29,-6)
    こんな偉そうな初心者も珍しいで
    60 : Name_Not - 2011/11/17(木) 22:22:20.46 ID:??? (+61,+28,-2)
    >>58
    それはspanの中にb以外が入った時に間違った結果になるでしょ
    61 : Name_Not - 2011/11/17(木) 23:28:25.36 ID:??? (+53,+18,-28)
    っていうか、>>51が欲しいのはbタグの数じゃなくて、bタグの要素のリストだぞ。
    3って表示して欲しいのに とは書いてあるが。
    62 : Name_Not - 2011/11/18(金) 01:38:23.79 ID:??? (-1,-29,-24)
    Ajaxで書き換えた後の中に記述してあるjavascriptが動作しないのは仕様ですか?
    63 : Name_Not - 2011/11/18(金) 02:02:33.72 ID:??? (+49,+25,+0)
    いいえ
    64 : Name_Not - 2011/11/18(金) 02:19:47.40 ID:??? (+23,-30,-121)
    >>63
    Ajaxで書き換えた後の中にある
    <a href="javascript:document.form.submit()">
    の部分をクリックすると
    document.form.submit is not a function
    と出てきます。
    フォームの中にsubmitの単語が他に含まれていた場合もこうなるみたいですが今回はそのエラーではありません。
    ちなみにAjaxの書き換えに使用するphpファイルは
    直接開いてみたところエラーが出ずにちゃんと飛んだのでAjaxに使用した場合うまく動作しません。

    65 : Name_Not - 2011/11/18(金) 02:48:30.16 ID:??? (+57,+24,-14)
    javascriptスキーマとかどこの原始人だよ
    66 : Name_Not - 2011/11/18(金) 02:52:15.70 ID:??? (-2,-30,-19)
    document.formってなんだよ
    document.getElementById('form')のこと?
    67 : Name_Not - 2011/11/18(金) 02:57:30.33 ID:??? (+3,-29,-82)
    アコーディオンメニューをjQueryのslideDownとslideUpを使って
    作成したのですが、slideDownで下がりslideUpで上がるアニメーション
    のときにアコーディオンメニューとアコーディオンメニューの下に書いた
    文字がブレるような挙動をするのですが、仕様なんですか?
    68 : 64 - 2011/11/18(金) 02:59:51.46 ID:??? (+11,-27,-25)
    jQueryの記述に変えたところなんとかできました。

    >>65
    ダメなの?w
    69 : Name_Not - 2011/11/18(金) 08:09:35.24 ID:??? (+0,-30,-18)
    >>68
    せめて document.forms['form'].submit(); にして

    > ダメなの?w
    リンクではないからa要素である必要性はないでしょ?
    http://www.yomotsu.net/wp/?p=591
    70 : Name_Not - 2011/11/18(金) 08:23:21.91 ID:??? (+5,-30,-39)
    >>64
    IEだとDOMで動的に生成した要素にonclick=javascript:~などは使えないです。
    71 : Name_Not - 2011/11/18(金) 08:27:42.68 ID:??? (+16,-30,-13)
    >>70
    いやいや、onclick="javascript:*" は全然意味が違うでしょう
    ラベルじゃないですか
    72 : Name_Not - 2011/11/18(金) 08:39:40.52 ID:??? (+30,-3,-5)
    >>71
    a href=~でも同じだったとおもう。
    回避策はあったけど今すぐは思い出せない。
    73 : Name_Not - 2011/11/18(金) 08:59:12.49 ID:??? (+22,-29,-14)
    >>72
    IE8 で再現できません
    http://jsfiddle.net/u8ygk/
    setAttribute のバグを混同して記憶しているのでは?
    http://www.tagindex.com/kakolog/q4bbs/2201/2582.html
    74 : Name_Not - 2011/11/18(金) 09:05:24.62 ID:??? (+10,-30,-194)
    回避策ですが・・・
    送信するform要素に id="form"、追加されるa要素に id="formLink"
    を設定しているとして、以下のコード書いたらいけるとおもうよ。

    var fromSubmit = function(){
    document.getElementById( 'form' ).submit();
    }
    var formSubmitLink = document.getElementById( 'formLink' );
    formSubmitLink.onclick = fromSubmit;


    >>73
    はまったのは、IE6-7だったかも。
    75 : Name_Not - 2011/11/18(金) 09:16:32.53 ID:??? (+49,-30,-114)
    >>74
    情報を小出しにしないでください
    setAttribute のバグなら IE8 で解消されたことは理解してますし、>>73は IE6-7 でも動作するように書いています(環境がないので試してませんが)
    http://fiddle.jshell.net/vSqKr/26/show/#Q13
    あなたの環境では動作しないのでしょうか?

    onclickにjavascriptラベルを適用する意味は全くありません
    私の知る限りでは、element.onclick なり attachEvent なりを使えば IE6-7 でも適用できるはずです
    76 : Name_Not - 2011/11/18(金) 09:25:03.16 ID:??? (+63,+29,-1)
    >>75
    すみませんね、引っ込みますよ。
    77 : 75 - 2011/11/18(金) 09:25:13.13 ID:??? (+5,-30,-53)
    > >>73は IE6-7 でも動作するように書いています(環境がないので試してませんが)
    失礼。コンソールが使えないのでアドオンなしの IE6-7 ではエラーになりますね。
    alert() に変更しました。
    http://jsfiddle.net/u8ygk/1/
    78 : Name_Not - 2011/11/18(金) 09:30:20.17 ID:??? (+57,+29,-7)
    別に引っ込まなくてもよかったんじゃないの
    IEで動作するか確かめるだけだし
    79 : Name_Not - 2011/11/18(金) 09:36:16.05 ID:??? (-2,-30,-41)
    今回のバグとは関係ないだろうけど、<a onclick="javascript:alert(true)"> とラベルの件は過去ログでも話題になってた気がする
    80 : Name_Not - 2011/11/18(金) 09:49:29.93 ID:??? (+3,-30,-60)
    var a = document.createElement('a');
    a.setAttribute('onclick', 'javascript:alert(true)'); // 結局、こういうことだったの?
    81 : Name_Not - 2011/11/18(金) 10:10:14.58 ID:??? (-22,-29,-75)
    jqueryかその他のじjavascriptで以下のことをできるソースを探しています。
    ご存知のかたがいましたら教えていただけないでしょうか?

    formで画像のサブネームを選択したかを判定したいのですが、formのチェックボックスをつけるのではなく、画像をクリックしたときに、
    画像の色を変えるもしくは、画像に枠線などをつけてON/OFFを判定するような感じにしたいです。
    83 : Name_Not - 2011/11/18(金) 10:38:54.23 ID:??? (-16,-30,-24)
    >>81
    <img src="sample.jpg" aria-selected="true">
    84 : 81 - 2011/11/18(金) 10:51:36.20 ID:??? (+36,+15,-1)
    >>82,83
    ありがとうございます。
    なるほど、チェックボックスかくして、自作したほうが簡単そうですね(^^ 
    85 : Name_Not - 2011/11/18(金) 11:29:37.39 ID:??? (+58,+23,-63)
    Twitterのページを開きっぱなしにすると新しいツイートを自動で確認してくれますが
    あれはどうやってるのですか?
    確認するたびにJSONPでscriptタグを作ってるのですか?
    86 : Name_Not - 2011/11/18(金) 11:30:42.71 ID:??? (+33,-29,-2)
    >>85
    setIntervalとかじゃね?
    87 : Name_Not - 2011/11/18(金) 11:52:09.89 ID:??? (+4,-29,-7)
    >>85
    定期的にhttp://api.twitter.com/1/statuses/home_timeline.json をXHRで読み込んでいる
    88 : Name_Not - 2011/11/18(金) 12:12:42.74 ID:??? (+51,+18,+2)
    >>86-87
    ありがとうございます
    89 : Name_Not - 2011/11/18(金) 15:12:59.39 ID:??? (-2,-30,-81)
    <text:sample>
    <string>サンプル</string>
    </text:sample>

    上記のようなコロンを含む要素をRSSやXMLで見かけますが
    :sampleがついたtext要素を取得する場合は何を使えば良いのですか?
    90 : Name_Not - 2011/11/18(金) 17:24:13.64 ID:??? (-1,-29,-36)
    :sampleがついたtext要素じゃなくてtext:がついたsample要素じゃないのかい
    91 : Name_Not - 2011/11/18(金) 17:36:07.87 ID:??? (-1,-29,-13)
    getElementsByTagNameNS
    92 : Name_Not - 2011/11/18(金) 17:41:03.75 ID:??? (-1,-29,-26)
    え?
    textが要素で
    :sampleは名前空間じゃありませんでしたか?
    94 : Name_Not - 2011/11/18(金) 17:55:48.99 ID:??? (-2,-30,-34)
    getElementsByTagNameNS(text:に結び付けられているURI, 'sample')
    96 : Name_Not - 2011/11/18(金) 19:25:48.05 ID:??? (-28,-29,-42)
    >>95
    問題ありません。
    length はjQueryオブジェクトの数をあらわします。
    http://api.jquery.com/length/
    98 : Name_Not - 2011/11/18(金) 20:46:23.01 ID:??? (+3,-30,-78)
    jqueryは $(セレクタ.操作1().操作2()… って書けるのが醍醐味だからね。
    選択できなかったからってnullなどを返すのはまずいわけだな。
    0個の選択という状態にしておいて、操作の所ではなにもしないって感じになっている。

    .isEmpty()ぐらいあっても良かったかもしれんが…
    $.fn.isEmpty = function() {
    return this.length <= 0;
    };
    拡張するならこうか。
    99 : Name_Not - 2011/11/18(金) 21:08:56.81 ID:??? (-1,-29,-17)
    querySelectorAllみたいなもんだからあれでいいんだよ
    100 : Name_Not - 2011/11/18(金) 22:45:34.55 ID:??? (+59,+25,-19)
    本職、趣味、学生問わず
    IDE or エディタって何を使ってます?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について