--- title: Element.setAttribute() slug: Web/API/Element/setAttribute tags: - API - DOM - NeedsSpecTable - 元素 - 参考 - 属性 - 方法 translation_of: Web/API/Element/setAttribute ---
设置指定元素上的某个属性值。如果属性已经存在,则更新该值;否则,使用指定的名称和值添加一个新的属性。
要获取某个属性当前的值,可使用 {{domxref("Element.getAttribute", "getAttribute()")}};要删除某个属性,可使用 {{domxref("Element.removeAttribute", "removeAttribute()")}}。
element.setAttribute(name, value);
name
setAttribute()
is called on an HTML element in an HTML document.value
当在 HTML 文档中的 HTML 元素上调用 setAttribute()
方法时,该方法会将其属性名称(attribute name)参数小写化。
如果指定的属性已经存在,则其值变为传递的值。如果不存在,则创建指定的属性。
尽管对于不存在的属性,getAttribute()
返回 null
,你还是应该使用 removeAttribute()
代替 elt.setAttribute(attr, null)
来删除属性。
布尔属性(原文是Boolean attributes)只要出现在元素上就会被认为是 true
,无论它的值是什么; 一般来说, 你应该将 value
设置为空字符串 (""
) 。(一些人使用这个属性的名称作为值; 这不会出现什么问题,但这是不规范的). See the {{anch("Example", "example")}} below for a practical demonstration.
由于将指定的值转换为字符串,因此指定null不一定能达到您的期望。 而不是删除属性或将其值设置为{{jsxref(“ null”)}},而是将属性的值设置为字符串“ null”。 如果要删除属性,请调用{{domxref(“ Element.removeAttribute”,“ removeAttribute()”)}}}。
{{jsxref("undefined")}}
无效字符错误
在下面的例子中,setAttribute()
被用于设置 {{HTMLElement("button")}} 上的属性。
<button>Hello World</button>
var b = document.querySelector("button"); b.setAttribute("name", "helloButton"); b.setAttribute("disabled", "");
这说明了两件事:
{{ EmbedLiveSample('Example', '300', '50') }}
{{DOMAttributeMethods}}
{{Compat("api.Element.setAttribute")}}
使用 setAttribute()
修改某些属性值时,尤其是 XUL 中的 value
,可能得不到期望结果。这是由于 attribute
指定的是默认值。要访问或修改当前值,应该使用 property
属性。例如,使用 Element.value
代替 Element.setAttribute()
。