本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

转播到腾讯微博
返回列表 回复 发帖

[交流] JS经验:用Jquery的attr方法动态添加JSON对象参数

命名一个对象:
var aaa={};

然后,用aaa.bb="BBB";aaa.cc="CCC"这样的方法当然可以为之添加参数。
但是,当bb、cc这些参数名并不确定,需要使用别处引来的不确定字符串时,这种添加动作就繁琐了。比如,有一个变量为ux="xxx",xxx可变,但需要用它作为参数名。另有变量uy="yyy",yyy可变,但需要用它作为参数值。
我试了eval("aaa."+ux+"="+uy),也试了JSON.parse等其它方法,能达到目的,但相当相当繁琐,如果uy是数组或对象,那就更麻烦了,反复嵌套的各种括号杀人无算哪。

后来,我试着用Jquery来解决,发现问题一下就简单明了了。
$(aaa).attr(ux,uy)
一下就解决了。
用$(aaa).attr(ux),还可以用来判断此参数是否已经建立。
但需要注意的是,不能用$(aaa).attr({ux:uy}),这样用的话,它会把"ux"作为参数名。

参数的建立和修改,可以这样。但参数的删除却不能用removeAttr()。甚至,连
eval("aaa."+ux+"=undefined")也不行。只能用eval("delete aaa."+ux)。

请大家帮忙,把本站加入ABP白名单
额,这个用object[attributeName]就可以了
额,这个用object[attributeName]就可以了
tomchen1989 发表于 2012-10-1 19:29
这么简单?请问在哪里能找到比较全面的教材?我找来找去都不得要领啊。
请大家帮忙,把本站加入ABP白名单
话说,其实应该叫property,不叫attribute,attribute是对于element而言的。
object[propertyNameString]。即object["propertyName"]等价于object.propertyName。

当然element也是一种object,所以element[attributeNameString]也能用:
myDiv["onclick"] = function(){..};
myDiv["id"] = "newid";

object.propertyName = undefined;会把这个property设为undefined。delete会删掉这个property

jQuery的attr能用可谓纯属巧合,这个方法是用在element上的,它在实在没办法用setAttribute时就会用element.attributeName来设定attribute,所以正好普通object能用上了。但是removeAttr用不了,它不会delete一个元素的attribute
这么简单?请问在哪里能找到比较全面的教材?我找来找去都不得要领啊。
买或下载一本《JavaScript权威指南》,第5或6版,最好英文的。下载的话,英文版,第5版的有chm,第6版有非扫描的文字版pdf,方便搜索查阅;中文的似乎只有扫描的
本帖最后由 congxz6688 于 2012-10-1 21:26 编辑
话说,其实应该叫property,不叫attribute,attribute是对于element而言的。
object[propertyNameString]。即object["propertyName"]等价于object.propertyName。

当然element也是一种object,所以element[attribut ...
tomchen1989 发表于 2012-10-1 21:07
本来已经写好的脚本,为了练习JSON,改得一踏煳涂了。经您的指点,这下程序又简化了好多!

听君一席话,远胜我忙忙碌碌在网上瞎忙好几天!
请大家帮忙,把本站加入ABP白名单
lz您好我找了好久找到您这个帖子!想请问 您实现了吗?能否有实现的贴出来!万分感谢
lz您好我找了好久找到您这个帖子!想请问 您实现了吗?能否有实现的贴出来!万分感谢
参数的建立和修改,可以这样。但参数的删除却不能用removeAttr()。 这个工具很有用:JSON formatter