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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - タグè¿1⁄2åŠ + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    501 = :

    >>500
    http://googlejapan.blogspot.com/2010/04/google.html

    502 = :

    >>501
    配置覚えられるかwwwと思ったが四月馬鹿ネタなのか
    ネタとして買ってみたい気持ちでもあるが

    503 = :

    >>486>>487>>488>>489>>490>>491
    ありがとうございます。漠然としすぎました。

    上記>>485)のような構造(これが繰り返しある)をしているサイトのGreasemonkeyを作ろうと思っていて、
    ただ、取得したいa要素にidがついておらず、またdiv、p、h2が別の場所にも散在しているため、

    「hogeクラスのdivの中にある、最初のa要素(本当はhogeの中にa要素は複数ある)」のテキスト部分を
    取り出そうと思ってやってみたのですが、四苦八苦してしまった、という感じです。

    var hogelist = document.getElementsByClassName('hoge');
     for (var i = 0; i < hogelist.length; i++) {

    とした後の、テキスト取得の部分がうまくいかないです。

    hogelist[i].childNodesだったりitemだったり色々組み合わせて試してみたんですが、
    動かなかったり、nullやUndefinedが返ってきたり・・・

    たぶん初歩的な部分が分かってないんだと思うんですが、引き続きアドバイスお願いしたいです

    504 = :

    とりあえずFirebugsのコンソール使ってみたら?

    505 = :

    >>503

    var x = document.getElementsByClassName("hoge");
    for(var i = 0; i < x.length; i++){
      var a = x[i].getElementsByTagName("a");
      for(var j = 0; j < a.length; j++){
        var t = a[j].firstChild.nodeValue;
        if(t.nodeType == 3){
          alert(t.nodeValue);
        }
      }
    }

    506 = :

    今からJava勉強すんのってどうよ

    507 = :

    Javaスレで聞くのが適切だと思います

    508 = :

    >>501
    代書屋さんにある和文タイプみたいだ。

    509 = :

    >>504
    試してみます。

    >>505
    動かないです;;

    510 = :

    >>509
    全角スペースだからちゃんと半角に直してね

    511 = :

    Firefox は \u3000 を White Space と解釈できるはずなんだが…。
    http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.2

    512 = :

    >>509 何で動かないのか書かないと「ああそうですか」で終わっちゃうわけで

    513 = :

    >>510
    本当に丁寧にありがとうございます。
    ただ、何度やっても、Undefinedしか表示されないです;;

    514 = :

    >>513
    nodeType == 3(テキストノード)のときしかalert出ないからUndefinedは出ないはずなんだけど

    515 = :

    >>513
    ミスってたすまん

    -   var t = a[j].firstChild.nodeValue;
    +   var t = a[j].firstChild;

    でもt.nodeTypeがnullになるからUndefinedにはならないんだよね、ちゃんと更新は反映されてるの?

    516 = :

    >>515
    ありがとうございます。書き換えてみると、今までで一番近い挙動になりました。

    ただ、今回のalertは、hoge 内のa要素すべてのテキストを順番にalertするような挙動のようです。
    実際には、hoge 内には、4つのa要素があり、今回のを動かしてみると、4つのa要素のテキストが順番にalertされました。

    自分が取得したいのは、2番目のa要素のテキストなのですが(1つめのa要素を見逃してました)、
    >>505のalert部分を、

    alert(t[1].nodeValue);

    とするのではいけないのでしょうか・・・?(ちなみにコレにするとalert自体がされなくなりましたorz

    518 = :

    Firefoxならこれでいいんじゃない

    Array.forEach(
     document.getElementsByClassName('hoge'),
     function (div) {
      var link = div.getElementsByTagName('a')[1];
      var text = link.textContent;
      alert(text);
     });

    519 = :

    >>518
    ありがとうございます!無事望んだ挙動が得られました。

    アドバイス頂いた皆様ありがとうございます><

    520 = :

    forEachってforループと役割が違う?書き方が違うだけ?

    521 = :

    ・ループを途中で止められない(everyかsomeなら止められる)
    ・ループごとにスコープが生成される(>>327はそんな感じ)

    522 = :

    疎な配列で番号をちゃんと飛ばす

    523 = :

    >>521
    無限ループと同じでbreakすれば止められるよね

    525 = :

    は?

    527 = :

    javascriptのforEach文ってfor (var i in hoge)でしょ?

    <script>
    var hoge = [1,4,1,4,2,1,3,5,6];
    for (var i in hoge) {
    document.write(hoge[i]+"<br>");
    if (hoge[i] == 3) {
    break;
    }
    }
    </script>

    528 = :

    >>518からの流れだよ
    >>527はfor-in文。JSにはforEach文なんてないよ。他の言語と混同してる

    Firefoxにはfor each-in文というのがあるけどね

    529 = :

    for...inやfor each...inは配列に使っちゃ駄目ってmdcに書いてあった
    あとforEachは
    http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility
    と同等ってmdcに

    530 = :

    ECMAScript 5で標準化されてIE9がやっと最後に実装するというのに
    いまだに「JSにはforEach文なんてない」などとぬかすか

    532 = :

    流れを見ずに書き込んだ
    スマンコ

    533 = :

    >>528
    こういう配列やオブジェクトの要素数すべてに対して
    ループを行うものをforeach文というんですよ
    JavaScriptの場合いくつかあるけど
    このfor-inもforeach文の1つ

    534 = :

    発端の>>520を確認してほしいんだが
    なんで「forEach」から「多言語で言うforeach文」って話になるんだ

    520がそういう意図で聞いたというのなら、>>529だね

    535 = :

    >>533
    その認識は危険
    JSのfor-inはプロトタイプを辿るから他言語のforeachと違う

    537 = :

    for-inだけじゃなくて全てにおいて実装依存では
    このスレでJavaScriptエンジンつくろうず
    言語はC#で頼む

    539 = :

    >>537
    それはさすがに頭が悪い

    540 = :

    ほんと池沼みたいな奴ばっかだな

    541 = :

    function getText(n){
    var strings = [];
    getStrings(n, strings);
    return strings.join("");

    function getStrings(n, strings) {
    if (n.nodeType == 3)
    strings.push(n.data);
    else if (n.nodeType == 1) {
    for(var m = n.firstChild; m != null; m = m.nextSibling) {
    getStrings(m, strings);
    }
    }
    }
    }

    このコードが動きません.教科書のサンプル写しました.
    だれか教えてくれませんか

    542 = :

    >>541
    あまり良いコードとは思えないけど、動くでしょ。

    544 = :

    まさかdocumentを与えてないよな

    545 = :

    >>544

    すみません.その通りでした....

    ありがとうございました

    546 = :

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function Rogin(){
    window.open("rogin.html","rogin","");
    if(!$count2){$count++;$count2++;}
    else if($count2){window.alert('本日は既にログイン済みです!');}
    }
    }
    // -->
    </SCRIPT>
    <input type=submit value=ログイン onClick=\"return checkRogin()\">";

    Perlで作成しているページのログインボタンについてなのですが
    $countは累計ログイン数、$count2は今日ログインしたかどうかの記録です
    上のようにしてみたところ上手くいかないのですが、サブルーチン内でcountを増やす処理ってどうすればよいのでしょうか?

    547 = :

    >>546
    関数の外で変数宣言すれば外でも値が保持される。
    var $count;
    でもページを再表示したら保持されないよ。保持したければcookieとかサーバーサイドで保存しないと。

    余談ですがifの条件でcount2のfalseを評価してるからelseにはif要らない。この場合。
    あと、ログインのスペルは log in だよ。
    あと、JSで変数に$は要らないよ。あってもいいけど

    548 = :

    あと、JavaScript で未定義の変数をインクリメントしてもうまくいかないよ。
    最初に数値を代入しておかないと。

    549 = :

    >>546
    Perl側の処理とJavaScript側の処理を混同してるね。
    Perlで生成したHTMLにあるJavaScriptから、Perlスクリプト内の変数に直接アクセスすることはできないよ。
    フォームを使ってPerlスクリプトにパラメータをPOSTするか、
    XMLHttpRequestでPerlスクリプトにアクセスできるようなJavaScriptをHTMLに入れておく。

    550 = :

    sub LOGINCHECK{
    if($count2){print << " -----END-----";
    <SCRIPT language="JavaScript">
    function checkLogin(){
    window.open("rogin.html","rogin","");
    if(!count2){
    var count = $count + 1;
    var count2 = 1;
    document.all.subject.value=count;
    document.all.subject.value=count2;
    document.login.submit();
    }if(count2){window.alert('本日は既にログイン済みです!');return false;} }
    <form method="post" action="login.cgi" name="login">
    <input type="hidden" name="count">
    <input type="hidden" name="count2">
    <input type=submit value="ログイン" onClick="return checkLogin()"></td></tr>
    </form>
    </script>
    -----END-----
    }else{print "";}
    my $count = $in{'count'};
    my $count2 = $in{'count2'};}
    LoginとRoginのミスはお恥ずかしい・・・
    PERLでの記述になっていますが上記のように作りました
    Java内でPOSTで送信した値をJava終了時に取得させてみたところやはり値の取得ができていません
    POSTの使い方間違ってますかね?


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - タグè¿1⁄2åŠ + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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