JavaScript源代码中添加变量的问题

issue with add variable in javascript source

本文关键字:问题 变量 添加 源代码 JavaScript      更新时间:2023-09-26
<script type="text/javascript">
window.onload = function () {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = "http://www.example.com/abc/abc.js?timestamp=" + new Date().getTime();
s.id = 'help-wall';
s.data-campaign-id ='6';
document.body.appendChild(s);
}
</script>

s.data-campaign-id 中显示错误。请帮忙

连字符是 Javascript 标识符中的非法字符,因此不能与对象点语法一起使用。您必须改用方括号语法:

s['data-campaign-id'] = '6';

Alex 在评论中提出了非常有效的观点,即这不会注册为数据属性,只会注册为节点的属性。如果您希望它成为一个属性,则需要setAttribute

s.setAttribute('data-campaign-id', '6');

无需对其他属性执行此操作,因为这些属性映射到相应的属性。因为您使用的是自定义属性,所以它没有。

正如其他人所指出的,您显然不能使用点表示法来表示名称不是有效标识符的属性和属性。

但是,data-*属性是一种特例。在这种情况下,您可以轻松地说

s.dataset.campaignId = '6';

在内部,数据集属性名称在驼峰大小写 (campaignId) 和破折号形式 (data-campaign-id ) 之间映射,以便于设置,就像设置s.style.fontSize = "10px";一样。

请注意,IE<=10 不支持s.dataset,因此您必须回退到 s.setAttribute('data-campaign-id', ...)