【问题标题】:Javascript send object as paramaterJavascript 发送对象作为参数
【发布时间】:2018-10-03 09:11:19
【问题描述】:

我有一个用 js 创建的长 HTML,我需要将一个 onclick 事件传递给一个图标,我想发送一个长对象作为具有其他需求的参数:

var opt = "<i style='font-size:18px; color:orange; cursor:pointer;' onclick=\"barkod_onizle_dialog.apply('"+vs_id+"',"+stok_ozet+",'"+b.stok_id+"','"+$('[name=tarih]').val()+"','"+secilmis_depo+"','"+b.stok_id+"','"+seri+"','"+urun_stt+"','"+lot+"','"+b.stok_isim+"',this)\" class='fa'>&#xf06e;</i>";

但是在我的浏览器上,我得到了这个结果:

barkod_onizle_dialog.apply('54',[object Object],'1508','03.10.2018','11','1508','155','2022-10-02','156','ADVIA -DIRUI R1 KABI (75 mL)',this)

错误是:

Uncaught SyntaxError: Unexpected identifier

我无法用引用方法解决它。

感谢您的帮助。

【问题讨论】:

  • 尝试使用JSON.stringify
  • 做一个console.logstok_ozet 看看它的价值是什么。如果没有,请尝试 Paul Fitzgerald 的建议。
  • 是的,我已经尝试查看 stok_ozet 对象内部的内容,它已满,并且使用 json stringify 仍然给我同样的错误
  • 理想情况下,您不会将对象传递给这样的函数。您将在 apply() 方法中传递一个标识符(您已经这样做了)并在需要时获取该对象。

标签: javascript html string object


【解决方案1】:

您的stok_ozet 变量包含一个对象,说明它为什么在串联字符串中显示[object Object],因此您可能需要在串联期间将其转换为字符串,例如:

onclick=\"barkod_onizle_dialog.apply('"+vs_id+"',"+JSON.stringify(stok_ozet)+",'..

如果可以的话,我也建议在你的 JS 代码中附加点击:

var opt = "<i style='font-size:18px; color:orange; cursor:pointer;' class='fa barkod_onizle_dialog'>&#xf06e;</i>";

$('body').on('click', '.barkod_onizle_dialog', function() {
  barkod_onizle_dialog.apply(vs_id, stok_ozet, b.stok_id, $('[name=tarih]').val(), secilmis_depo, b.stok_id, seri, urun_stt, lot, b.stok_isim, this);
})

【讨论】:

  • 当我尝试使用 JSON.stringify 时,它给了我' barkod_onizle_dialog.apply('54',{ ' 并且仍然是同样的错误
  • 好的,我看到了 Muhammed,请给我看console.log( stok_ozet ); 的结果,它可以帮助我们发现主要问题
  • {birim: "125", sonkullanim_tarih: "2022-10-02", recete_detay: Array(13), recete_bilgileri: {…}, etiket_ozellik: Array(1), …} 它太长了
  • 你想将所有对象作为参数传递?
  • Muhammed 希望您的问题得到解决,我在帖子中添加了另一个建议,HAPPY CODING。
【解决方案2】:

她的问题是你试图将一个object 连接到一个string,所以这个object 的方法toString() 被调用,这就是它被表示为[object object] 的原因。

你需要stringify这个object在尝试连接它之前,你需要在你的对象上使用JSON.stringify(),然后再将它们连接到string

演示:

var obj = {a: 40, b: 60, c:'a string'};

var opt = "<i style='font-size:18px; color:orange; cursor:pointer;' onclick=\"barkod_onizle_dialog.apply('',,'','"+JSON.stringify(obj)+"','','','','','','',this)\" class='fa'>&#xf06e;</i>";
console.log(opt);

【讨论】:

    猜你喜欢
    • 2016-07-10
    • 2021-12-26
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多