2016-04-24 7 views
3

jqueryを使って基本的な汎用関数を作成し、htmlリストのすべての要素を配列に入れたいと考えています。すべてが大丈夫と思われますが、私は戻り値を得るためにいくつかの問題に遭遇します。私はこれが基本的な問題であることを知っていますので、私がそれを解決するのを助けてくれると願っていますJquery:関数の戻り値を取得する

<script> 
     function listeToArrayById(idListe){ 
      $(function(){ 
       var listChildren = $("#" + idListe).children(); //puts all li children in var listChildren 
       var arrayListChildren = []; 
       $.each(listChildren, function(key, value){ 
        arrayListChildren.push($(this).text()); 
       }) 
       return arrayListChildren; // here it's ok arrayListChildren = ["a", "b", "c"] 
      }) 
     } 
     var ulChildren = listeToArrayById("list1"); 
     window.console.log(ulChildren); // here is my problem because ulChildren is undefined ... I should get an array ["a", "b", "c"] 
    </script> 
</head> 
<body> 
    <ul id="list1"> 
     <li>a</li> 
     <li>b</li> 
     <li>c</li> 
    </ul> 
    </body> 
+1

あなたの関数の中で関数を呼び出すと '$(function(){'をあなたの関数に入れてDOMがロードされるのを待っているので実行しません) 'var ulChildren = listeToArrayB yId( "list1"); window.console.log(ulChildren); 'DOM内部で準備ができており、関数から削除されていれば動作します。 – putvande

+0

助けてくれてありがとう – zm455

答えて

4

なぜ `$(関数(){`あなたは間違った方法でdocument ready handler

function listeToArrayById(idListe){ 
    var listChildren = $("#" + idListe).children(); 
    var arrayListChildren = []; 
    $.each(listChildren, function(key, value){ 
     arrayListChildren.push($(this).text()); 
    }) 
    return arrayListChildren; // here it's ok arrayListChildren = ["a", "b", "c"] 
} 

$(function(){ 
    var ulChildren = listeToArrayById("list1"); 
    console.log(ulChildren); 
}); 

を使用しており、以下のようなコードを簡素化することができ、

function listeToArrayById(idListe){ 
    return $("#" + idListe).children().map(function(){ 
      return this.textContent 
    }).get(); 
} 
+0

大変ありがとうございました!私はstackoverflowで "11"の評判です...私は良い答えに投票できるようにするには "15"の評判が必要....私は私の答えに1人の投票が必要なことを意味し、私は15の評判になるでしょう。 – zm455

+0

@ zm455それでも答えは受け入れることができます。この答えがあなたを助けてくれたと感じたら、私の答えの中にある目盛りを押してみてください。そして、これは強制ではありません。 :) –

+0

誰かが私の質問に投票したので、あなたの答えに投票することができます。ご清聴ありがとうございます;-) – zm455

関連する問題