2017-09-04 4 views
0

私はDjango Web開発プラットフォームで作業していますので、私はメニューの作成にいくつかのdjangoテンプレート言語を使用します。私の仕事は簡単ですが、私はjsと仕事をしてからしばらくしていましたが、私は今何が間違っているのか分かりません。javascript/jquery:選択タグ内のすべてのオプション要素のテキストのリストを作成

各オプション要素のテキストの文字列のリストを作成するか、そのvalue属性の文字列しかし、今、何が終わっ反復取得しているように見えるん...

selectタグ

<div id="keywordCollection"> 
    <select id="#allKeywords"> 
    {% for keyword in keywords %} 
    <option value="{{ keyword }}">{{ keyword }}</option> 
    {% endfor %} 
    </select> 

Javascriptを(これは、このウェブのためのHTMLファイル内にインラインスクリプトであることに注意してください上記の直後に表示されます)。

<script> 
    var collection = [] 
    $("#allkeywords option").each(function() { 
    //This never begins running. 
    console.log("ADDING"); 
    collection.push($(this).value); 
    }); 
    $(function(){ 
    var collection = []; 
    var keywords = $("#allKeywords option"); 
    for(var i=0; i<keywords.length; i++) { 
     // This doesn't ever begin running, keywords.length == 0. 
     kw = keyword[i]; 
     console.log(kw); 
    } 
    $("#allKeywords option").each(function() { 
    //this doesn't ever begin running. 
    collection.push($(this).value); 
    }); 
    .... //irrelevant code that I cut out. 
}); 
</script> 

私のループの始まりはこれまでに始まった。この時点で、私の要素が実際に何かを持っているのだろうかと疑問に思われるかもしれません...しかし、そうです。そのdjango for-loopはメニューを生成し、私は自分のページでそれを見ることができます。

私はここで何が欠けていますか?

答えて

1

あなたのselectタグのidパラメータに '#' を削除します。

<select id="allKeywords"> 
    {% for keyword in keywords %} 
    <option value="{{ keyword }}">{{ keyword }}</option> 
    {% endfor %} 
</select> 

その方法は、以下のセレクタは動作するはずです:

$("#allkeywords option").each(function() { 
    // ... 
} 
関連する問題