【问题标题】:How to add object as attribute using javascript?如何使用javascript添加对象作为属性?
【发布时间】:2016-08-29 12:31:38
【问题描述】:

我正在尝试使用 javascript 将对象添加到属性,但它作为对象对象传递。

var choice = {'name':'one',id:1}

代码

return '<a href="/users?userId='+
  choice.id+'" class="tool-tip" title="'+
  choice.name+'"><span data-desc="'+
  choice+'">'+this.label(choice)+'</span></a>';

它正在创建

<a href="/users?userId=1" class="tool-tip" title="userName">
<span data-desc="Object Object"></span></a>

我哪里错了?

【问题讨论】:

  • 不要使用字符串来创建元素。
  • choice 是一个对象,你期待什么?也发this.label
  • @epascarello 我还能用什么?
  • @mplungjan 它是一个对象,点击元素我必须做一些操作
  • 什么是this.label()?你需要在data-desc属性里面写什么?如果您想要一个有效的答案,这是您需要提供的详细信息。见:stackoverflow.com/help/how-to-ask

标签: javascript html object


【解决方案1】:

当通过 Javascript 操作 DOM 时,绝对不需要通过中间的简化 HTML 表示。直接使用任意属性创建 DOM 对象:

var link = document.createElement('a');
link.href = '/users?userId=' + choice.id;
link.classList.add('tool-tip');
link.title = choice.name;

var content = document.createElement('span');
content.desc = choice;
content.textContent = this.label(choice);

link.appendChild(content);

return link;

然后 appendChild 这个 link 到其他一些 DOM 元素……

如果您绝对需要 choice 成为 dataset (data-*="…") 的一部分,因为其他一些组件依赖于它......好吧,dataset 只能保存字符串,不能保存对象,所以您至少必须同意该值为 JSON 字符串:

link.dataset.desc = JSON.stringify(choice);

【讨论】:

  • content.dataset.desc = choice 仍然给&lt;span data-desc="[object Object]"&gt;
  • 啊,是的,我忘了dataset 是一个字符串映射……更新了。 @Kunal
猜你喜欢
  • 2010-10-16
  • 2017-09-20
  • 2012-03-20
  • 2014-08-26
  • 2016-04-09
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多