javascript - 如何更改其中包含无效字符的元素的属性?

标签 javascript css

假设我有这个 HTML 元素:

<div id="n1" nameok="hello">

如果我想用JS改变nameok属性,很简单:

var x = document.getElementById("n1");
x1.nameok = 'new value';

但是假设我有另一个元素,像这样:

<div id="n2" name-not-ok="hello">

然后,第二行产生错误:

var x = document.getElementById("n2");
x2.name-not-ok = 'new value';

我想问题出在“-”上,这很可能是不允许的,所以我尝试了类似的方法

x2."name-not-ok" = 'new value';
x2("name-not-ok") = 'new value';

但是没有用。 我尝试用 Google 搜索,但在属性名称中出现“禁止”字符的情况下,我找不到正确的语法。

当然,我可以修改相应的 CSS 来避免使用带有“-”的属性,然后更改我所有的 HTML 代码……但首先,这个属性是我没有编写的“包”的一部分,其次...必须有办法 ;)

最佳答案

使用setAttribute如下

x2.setAttribute('name-not-ok', 'new val');

我建议对自定义属性使用 data-* 属性。

x2.dataset.nameOk = 'new val';

关于javascript - 如何更改其中包含无效字符的元素的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608087/

相关文章:

html - 仅子元素的后半部分有不同的背景

javascript - 将一个函数的值存储到另一个函数并从中获取值

javascript - 是否可以以非递归方式遍历 JavaScript 中的对象?

html - 离线使用下载的字体

html - 是否可以将自定义按钮添加到 mat select 下拉列表中?

javascript - 触摸事件不适用于多个模态框

javascript - 将鼠标悬停在父 div 上时同时更改图像和标题

javascript - 计算距离,包括 KmlLinestring 的高程/地形数据

Javascript 代码抛出异常 - 访问被拒绝。仅限 HTTPS。仅限 Internet Explorer

html - 将鼠标悬停在不同的 div 上时更改 div