在onclick的javascript,花括号不工作?

时间:2011-05-27 12:49:22

标签: javascript curly-braces

解决了,服务器端吃了我的{}。

我的HTML代码中包含此代码:

onclick="changes = {'a': 'b'};"

转换为

onclick="changes = ;"

我加载页面时。所以花括号和其间的一切都消失了。知道如何解决这个问题吗?最后,我想给一个匿名对象作为函数的输入:

onclick="dothis({'a': 'b', '1': '2'});"

2 个答案:

答案 0 :(得分:4)

我建议通过让您的输入跟踪数据,但实际的绑定和执行分开来使您的代码更具语义性:

<div id="myDiv" data-changes="{'a':'b', '1':'2'}"></div>


document.getElementById('myDiv').onclick = function() {
    var data = JSON.parse(this.getAttribute('data-changes'));

    // here you should be able to say data.a, data.1, etc.
};

大多数现代浏览器都支持本机JSON方法:

Browser-native JSON support (window.JSON)

但是对于那些没有的人,您可以添加对JSON库的支持:

https://github.com/douglascrockford/JSON-js

答案 1 :(得分:0)

您是否考虑过/您是否能够使用内联JavaScript?只需要一个外部JavaScript文件加载类似的东西(不是实际的代码,例如用途):

getElementById("myButton").click( function(){
   dothis({'a':'b','1':'2'})
})

这样的东西(特别是当与库配对时)也可以避免在你想要运行该功能的每个项目中复制代码。