2012-02-17 60 views
1

這基本上是JSON腳本解碼發生的理論問題。我是JSON和JavaScript的新手,所以正在接受教程。它給了我幾個例子代碼來工作。我發現這是因爲我犯了一個錯誤。示例代碼是this--JSON對象創建和JSON數組操作

<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> 

我會得到以下output--

Create Object from JSON String 

First Name: Jonatan 

Last Name: Holla 

但我不小心通過修改代碼的第14行犯的一個錯誤。而不是「lname」,我再次輸入了「fname」。

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

它提供了以下output--

Create Object from JSON String 

First Name: Holla 

Last Name: 

爲什麼會出現這種情況?同意第二次在fname上調用getElementId導致在「名字」字段中輸出「Holla」。但是,該聲明如何否定了前面的陳述的任何影響? (即第13行)?

+1

我看到它的第13行的方式首先將名字設置爲「喬納森」,你錯誤的行14用「霍拉」覆蓋這個。姓氏留空,因爲span#lname永遠不會更改。對我來說這非常有意義。 – 2012-02-17 17:58:05

+1

我在代碼中看不到任何JSON。只有JavaScript對象和數組。 – 2012-02-17 18:00:53

回答

2

它不會否定它,它會覆蓋它。

你先說:在fname中寫上「Jonatan」。然後你說在fname中寫上「Holla」。所以你最終只看到「霍拉」。

而lname是空的,因爲你不再設置它 - 相反,你設置fname 2次。

+0

好的,所以當腳本運行時,在輸出出現在屏幕上之前,所有的.innerHTML方法都將被評估。我對嗎? – 2012-02-17 17:59:33

+0

是的,這個腳本立即執行,你看到的結果是。 – Ixx 2012-02-17 18:02:12