2017-02-12 5 views
0

私はそうのように、配列の長さを取得し、ページ上に表示しようとしている:Javascriptを - 関数内でリターン配列の長さ

var someArray = ['item 1', 'item 2', 'item 3']; 

var getArrayLength = function() { 
    return someArray.length; 
} 

getArrayLength(); 

これが動作していないいくつかの理由。私は要素のinnerHTML、同じ問題を置き換えようとしました。私はsomeArray.lengthに等しい変数を設定し、それが動作しない変数を返す場合でも

<p id="demo"></p> 
document.getElementById("demo").innerHTML = someArray.length; 

。私は何の誤りもなく、ただの結果しか得ていません。ある関数に配列の長さを返すことに特別なものがありますか?

私はこれをjQueryを使って取り除くことができました。私はバニラのjavascriptで何が間違っているのか不思議です。

+1

"うまくいかない"とはどういう意味ですか? "ちょうどいい結果" --- JSのすべての式が何らかの結果を返します。提供されたコードはうまく動作し、自分で試してみてください。 – zerkms

+0

おそらくページが読み込まれるのを待っていません。あなたのスクリプトは 'p'要素の前後にありますか? –

+0

console.log()でロギングを試してください。番号を取得した場合は、.innerTextを代わりに使用してみてください。 – MohaMad

答えて

1

あなたは、ドキュメントがロードされた後innerHTML(優れているかtextContent)を設定する必要があります。これを試してみてください:それは内部的に(あなたが$(function() {...})内にコードを巻いてきたと仮定して)ロード・イベントを待っているため

window.addEventListener("load", function() { 
    document.getElementById("demo").textContent = someArray.length; 
}); 

jQueryのコードが働いていました。

+0

問題は、ドキュメントが完全に読み込まれていないことが原因でした。 – dmkr

3

機能を宣言する必要はありません。

var someArray = ['item 1', 'item 2', 'item 3']; 
 

 
document.getElementById("demo").innerHTML = someArray.length;
<p id="demo"></p>

+0

ありがとう、それはページがロードされている順序に関連していることが判明しました。 – dmkr

1

実際にあなたのコードが機能していますが、あなたは実際には何も表示しようとしていません。あなたのケースでは実際にあなたに出力を与える何かを追加します。

var someArray = ['item 1', 'item 2', 'item 3']; 

var getArrayLength = function() { 
    return someArray.length; 
} 

console.log(getArrayLength()); 
alert(getArrayLength()); 
関連する問題