2012-02-17 18 views
1

これは基本的に、JSONスクリプトのデコードが行われる方法に関する理論的な質問です。私はJSONとJavaScriptが初めてのので、チュートリアルを取っていました。それは私に働くべきいくつかの例のコードを与えました。私は間違いを犯したのでこれを見つけました。サンプルコードは、私がJSONオブジェクトの作成とJSON配列の操作

Create Object from JSON String 

First Name: Jonatan 

Last Name: Holla 

output--以下になるだろうthis--

<html> 
<body> 
<h2>Create Object from JSON String</h3> 
<p>First Name: <span id="fname"></span></p> 
<p>Last Name: <span id="lname"></span></p> 
<script type="text/javascript"> 
var employees = [ 
{ "firstName" : "John" , "lastName" : "Doe" }, 
{ "firstName" : "Anna" , "lastName" : "Smith" }, 
{ "firstName" : "Peter" , "lastName" : "Jones" }, ]; 
employees[1].firstName="Jonatan"; 
employees[2].lastName="Holla"; 
document.getElementById("fname").innerHTML=employees[1].firstName; 
document.getElementById("lname").innerHTML=employees[2].lastName; 
</script> 

</body> 
</html> 

だったしかし、私は誤ってコードの行14を変更することで、間違いを犯しました。 "lname"の代わりに、 "fname"をもう一度タイプしました。

document.getElementById("fname").innerHTML=employees[2].lastName; 

それは

Create Object from JSON String 

First Name: Holla 

Last Name: 

これはなぜ起こったのか?次のoutput--ましたかfnameでgetElementIdを2回呼び出すと、 "First Name"フィールドに "Holla"が出力されることに同意しました。しかし、この声明は、前の声明によるどのような影響を否定しましたか? (すなわち、13行目)?

+1

私が見ている方法は、まず「ファーストネーム」を「ジョナサン」に設定し、誤った行14は「ホラ」で上書きします。 span#lnameは決して変更されないので、Last Nameは空のままです。私にとっては、これは完璧な意味合いがあります。 –

+1

コードにJSONが表示されません。 JavaScriptオブジェクトと配列のみ。 –

答えて

2

否定しないで上書きします。

まず、次のように言ってください。fnameに "Jonatan"と書いてください。次に、fnameに "Holla"と書いてください。だから、最後には "Holla"だけが見えます。

これ以上設定しないので、lnameは空です。代わりにfnameを2回設定します。

+0

さて、スクリプトを実行すると、出力が画面に表示される前に、すべての.innerHTMLメソッドが評価されます。私は正しい? –

+0

はい、このスクリプトはimmediatlyで実行され、結果が表示されます。 – Ixx

関連する問題