2011-07-12 78 views
0

我想知道,如何在jQuery事件中动态更改json属性的值,然后将其加载到浏览器中。这里是示例json。如何更改事件的json属性?

var spiderman = { 
    "fname" : "Peter", 
    "lname" : "Parker", 
    "nick" : "Spidey" 
} 

和这里的事件,让我们说......点击事件

HTML代码

Input a new nickname:<br /> 
<input type="text" id="newNick" /> 
<div id="pressMe">Press Me!</div> 
<div id="output"></div> 

jQuery的事件

$("#pressMe").click(function(){ 
    var newNick = $("#newNick").val(); 

    /* please place the correct code here */ 

    $("#output").text("Spiderman's new nick is " + spiderman.nick); 
}) 

的目标是: 用户输入新的昵称。当用户点击#pressMe时,它将获得值#newNick并将其放置在json中以更改“nick”属性。之后......它会在#输出上显示新的“nick”属性。

我希望它不会混淆。谢谢!

+0

呃,在你的点击处理程序中设置spiderman.nick?这对你不起作用? – tjameson

回答

3

这应该很好地工作:

spiderman.nick = newNick; 

请记住,如果JSON来自一个AJAX请求,你装它与jQuery(或eval),然后对象属性可以访问,因为我写(即使你看到他们引用,如果你看看原始响应E)。如果您在内存中定义的JSON,那么你并不需要使用的属性名称报价,而是你应该写:

var spiderman = { 
    fname : "Peter", 
    lname : "Parker", 
    nick : "Spidey" 
} 
+0

它的作品,是的。但昵称:“Spidey”在HTML上不会改变。我在Firebug上查看它。这是json的工作原理吗? – Ryan

+1

是的,这是正确的。一旦加载了页面(DOM + JavaScript),服务器发送的静态表示就不再被浏览器使用,也不会被修改。 –

1

我相信你只是忽略了这个,但这应该工作:

$("#pressMe").click(function(){ 
    var newNick = $("#newNick").val(); 

    spiderman.nick = newNick; 

    $("#output").text("Spiderman's new nick is " + spiderman.nick); 
});