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 に答える