【问题标题】:javascript: pass object to a javascript created from stringjavascript:将对象传递给从字符串创建的 javascript
【发布时间】:2014-06-16 15:10:16
【问题描述】:

当从字符串创建对象时,是否可以将对象传递给 javascript?

我试过了,但它看起来不起作用:

var myobject = {name:"auto",color:"blue"};

var btn = "<button type='button' onclick='myfunc(" + myobject + ");'>Edit</button>";

如果我检查 onclick 事件,对象看起来像:[object Object]

【问题讨论】:

  • 您可以这样做,但您需要将其编码为字符串。您可以为此使用JSON.stringify()。然后,您需要为 HTML 转义(或直接设置属性值)。真的,不要做你正在做的事情。添加适当的事件处理程序并使您自己更轻松。如果元素上的数据更合适,还可以考虑使用data-* 属性,然后您可以为所有按钮分配一个单击处理程序。
  • 经验法则:在 JavaScript 中工作时,更喜欢 DOM 操作而不是字符串操作。

标签: javascript html object


【解决方案1】:

也许这是可能的,但这是非常错误的做法。

更好的是,使用第二个功能:

var myobject = {name: "auto", color: "blue"},
    btn = "<button type='button' onclick='myfunc2()'>Edit</button>",
    myfunc = function(obj) {
        // some function
    },
    myfunc2 = function() {
        myfunc(myobject);
    };

使用 JSON 对象格式使您的应用程序可以打开任何注入。所以,试着重构你的代码。并确保您确实需要它。

【讨论】:

    【解决方案2】:

    你可以像这样对对象进行字符串化:

    "(" + JSON.stringify(myobject) + ")"
    

    我想知道你为什么不简单

     onclick='myfunc(myobject);'
    

    如果 myobject 变量在您单击的那一刻设置,它将适合

    【讨论】:

    • 这还不够。还需要为 HTML 转义数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2018-01-30
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2012-07-30
    相关资源
    最近更新 更多