2017-06-08 22 views
0

私のプロジェクトの1つでは、他のウェブサイトからデータを取得するためにAPIを使用していますが、データをすべて取得するには、同じコードのブロックを2つの異なる変数で書き込む必要があります。だから明らかに私は関数を定義してそれを使いたいと思っています。ループ内の関数定義が実行される

関数は2つの引数をとります.1つはオブジェクトであり、もう1つはidです。関数の中で私はobject.lengthを使用して必要なすべてのデータを取得するためにオブジェクトをループします。関数定義内でループが実行され、コンソールにUncaught TypeError: Cannot read property 'length' of undefinedエラーが発生します。

は、ここに私のコードです:

function listAll(objectProp, destination) { 
    for (var i = 0; objectProp.length > i; i++) { 
     var option = document.createElement("option"); 
     var value = document.createTextNode(objectProp.name); 
     option.appendChild(value); 
     document.getElementById(destination).appendChild(option); 
    } 
} 

が、私は解決策を探してきたが、私は同じ問題を見つけることができませんでした。誰もがそれがなぜ起こっているか私にそれを説明することはできますか?

ありがとうございます!

更新: これはコードの外観です。

function listAll(objectProp, destination) { 
    if (typeof(objectProp) != 'undefined') { 
     for (var i = 0; objectProp.length > i; i++) { 
      var option = document.createElement("option"); 
      var value = document.createTextNode(objectProp[i].name); 
      option.appendChild(value); 
      document.getElementById(destination).appendChild(option); 
     } 
    } 
} 

ありがとうございました!

+4

関数に渡す変数が実際にインスタンス化され、 'undefined'でないことを確認し、最初のパラメータをコンソールを呼び出す前にコンソール – KAD

+2

単純なチェック 'if(typeof(objectProp)!= 'undefined'){}' –

+0

ありがとう!それは助けになった!私は前にそれを試しましたが、何も起こっていませんでした。関数を呼び出す際に手紙がないことが判明しました! – Zubru

答えて

0

.lengthを使用してJavaScriptのオブジェクトの長さを取得することはできません。 Length of a JavaScript object

+0

申し訳ありませんが、私は十分具体的ではありませんでした。そのオブジェクトには、.lengthを使用する配列があります – Zubru

関連する問題