2009-01-29 64 views
1

添加到對象我有一個JSON字符串,我已經轉換成一個對象,具有:在JavaScript

data=eval("(" + jsonString + ")"); 

我可以訪問所有的位,沒有問題顯示出來。 問題是我如何添加到對象。

例如:

data.car[0].name = "civic";<BR> 
data.car[1].name = "s2000"; 

所以,如果我有一個輸入框中添加一個新的車,我怎麼添加到車陣?

乾杯

回答

0

您應該能夠使用您發佈的語法。只需通過賦值,Javascript就可以將屬性添加到對象中。由於JSON字符串僅作爲普通對象進行分析,因此您可以指定一個新屬性並分配所需的值。

1

使用你上面的例子,是這樣的:

data.car[0] = { name: "civic" }; 
data.car[1] = { name: "s2000" }; 

這將一個新的對象分配給數組元素,一個屬性「名」。 Alertnatively,爲略偏代碼複用:

function car(name) { 
    this.name = name 
} 
data.car[0] = new car("civic"); 
data.car[1] = new car("s2000"); 
+0

這將意味着雖然數組的成員會有不同的構造函數,這可能是有用的,否則它可能會導致一個問題。 – AnthonyWJones 2009-01-29 14:49:39

1

這將新車添加到陣列中: -

data.car.push({name: "Zafira"}); 

順便說一句,你要小心使用eval解析JSON,它可能會導致你的代碼開放注入攻擊。

0

Assuiming你有一個輸入框,你可以附加一個模糊的事件(或當你想添加的車)

function addCar(carname){ 
    data.car.push({name:carname}) 
} 
1

在javascript中有2種方式來添加屬性的對象。

  1. 採用直接

    data.car[0].name = 'jose'; 
    
  2. Acessing就像一個數組:

    data.car[0]['name'] = 'jose'; 
    

所以,如果你有一個字段的名稱和一個值,你可以創建然後就像:

<input type="text" id="name" /> 
<input type="text" id="value" /> 
<script type="text/javascript"> 
    var d = function(id) { 
     return document.getElementById(id); 
    } 
    data.car[0][d("name").value] = d("value").value 
</script>