操作DOM属性的核心是区分Attribute与Property:Attribute指HTML标签上的原始字符串属性,通过
getAttribute</code></code></code>、<setAttribute/code></code></code></code>等方法操作;Property是DOM对象的JavaScript属性,可直接访问如class</code>='language-default'>class</code></code>='language-default'>element.class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code></code>、element.class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>value</code></code></code></code></code>。前者适用于自定义属性或需操作HTML结构的场景,后者更高效且能反映实时状态,尤其适合表单元素和常用属性。对于属性,推荐使用data-*class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'><dataset/code></code> API;样式操作应通过style</code>.property进行。注意避免混淆两者导致的状态错误,优先使用Property提升性能与可维护性。</blockquote>
class<
/code>='language-default'>class</code></code>='language-default'>src</code></code>="https://img.php.cn/upload/article/001/253/068/175844610263587.png" alt="怎么使用JavaScript操作DOM元素属性?"></p>JavaScript操作DOM元素属性的核心,无非就是围绕着获取、设置、移除和检查这几大需求。最直接且常用的方法是利用
style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>getAttribute</code></code></code>()</code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'><setAttribute/code></code></code></code>()</code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>removeAttribute</code>()</code></pre></div></div>和style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>hasAttribute()</code></pre></div></div>这套API,它们能够让你直接与HTML元素上的那些“原始”属性打交道。当然,对于很多常用属性,JavaScript也提供了更便捷的直接属性访问方式,比如style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code></code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>Name</code></code></pre></div></div>,甚至是style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.style</code>.color</code></pre></div></div>等等,这些往往更符合我们日常编程的直觉。</p>要操作DOM元素的属性,我们主要有以下几种途径,每种都有其适用场景和一些我个人觉得需要注意的细节:<
/p>1. 获取属性值:
style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.getAttribute</code></code></code>(name)</code></pre></div></div></strong> 这个方法非常直接,它会返回指定属性的字符串值。如果属性不存在,则返回style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>null</code></pre></div></div>。</p>style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>const myDiv = document.getElementById('myDiv'); constclass</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code> = myDiv.getAttribute</code></code></code>('class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code>');//获取class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code>属性 const dataValue = myDiv.getAttribute</code></code></code>('data-custom');//获取自定义data属性 console.log(class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code>, dataValue);</code></pre></div></div>2. 设置属性值:
style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.<setAttribute/code></code></code></code>(name,class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>value</code></code></code></code></code>)</code></pre></div></div></strong> 这个方法用于设置指定属性的值。如果该属性已经存在,它的值会被更新;如果属性不存在,则会创建该属性。style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>value</code></code></code></code></code></pre></div></div>参数会被自动转换为字符串。</p>style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>const myImg = document.querySelector('img'); myImg.<setAttribute/code></code></code></code>('class</code>='language-default'>class</code></code>='language-default'>src</code></code>', 'new-image.jpg');//设置图片的class</code>='language-default'>class</code></code>='language-default'>src</code></code> myImg.<setAttribute/code></code></code></code>('alt', '一张漂亮的风景图');//设置alt文本 myImg.<setAttribute/code></code></code></code>('data-class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code>', '12345');//设置自定义data属性</code></pre></div></div>3. 移除属性:
style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.removeAttribute</code>(name)</code></pre></div></div></strong> 顾名思义,这个方法就是用来从元素中移除指定属性的。</p>style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>const myButton = document.querySelector('button'); myButton.removeAttribute</code>('class</code>='language-default'>class</code></code>='language-default'><disabled/code></code>');//移除按钮的class</code>='language-default'>class</code></code>='language-default'><disabled/code></code>属性,使其可点击 myButton.removeAttribute</code>('data-temp');//移除一个临时数据属性</code></pre></div></div>4. 检查属性是否存在:
style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>element.hasAttribute(name)</code></pre></div></div></strong> 这个方法会返回一个布尔值,指示元素是否拥有指定的属性。</p>style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>const myInput = document.getElementById('myInput'); if (myInput.hasAttribute('required')) { console.log('这个输入框是必填的。'); }</code></pre></div></div>5. 直接访问DOM属性(Property)<
/strong> 对于很多常见的HTML属性,DOM元素对象上都有对应的JavaScript属性(Property)。这包括style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>id</code></code></code></code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>Name</code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>src</code></code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>href</code></code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>value</code></code></code></code></code></pre></div></div>、style</code>="position:relative; padding:0px; margin:0px;">class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>class</code>='language-default'>class</code></code>='language-default'>