0

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

我的 HTML 中有这段代码:

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

这转变为

onclick="changes = ;"

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

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

2 回答 2

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 方法:

浏览器原生 JSON 支持 (window.JSON)

但对于那些不这样做的人,您可以使用 JSON 库添加支持:

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

于 2011-05-27T12:57:04.580 回答
0

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

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

类似的东西(尤其是与库配对时)还可以使您不必在要运行该功能的每个项目中复制代码。

于 2011-05-27T12:58:42.477 回答