HTML属性操作,指的是使用JavaScript来操作一个元素的HTML属性。像下面有一个input元素,指的就是操作它的id、type、value等,其他元素也类似。

<input id="btn" type="button" value="提交"/>

在JavaScript中,有两种操作HTML元素属性的方式:一种是使用“对象属性”;另外一种是使用“对象方法”。这一节,我们先来介绍怎么用“对象属性”方式来操作。

不管是用“对象属性”方式,还是用“对象方法”方式,都涉及以下2种操作。

  • (1)获取HTML属性值
  • (2)设置HTML属性值

元素操作,准确来说,操作的是“元素节点”。属性操作,准确来说,操作的是“属性节点”。对于元素操作,我们上一章已经详细介绍过了,下面来介绍一下属性操作。

一、获取HTML属性值

获取HTML元素的属性值,一般都是通过属性名,来找到该属性对应的值。

语法:

obj.attr

说明:

obj是元素名,它一个DOM对象。所谓的DOM对象,指的是getElementById()、getElementsByTagName()等方法获取到的元素节点。我们在后
面章节中说到的DOM对象,指的就是这个,一定要记住了。

attr是属性名,对于一个对象来说,当然是通过点运算符(.)来获取它的属性值。

举例:获取静态HTML中的属性值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); oBtn.onclick = function () { alert(oBtn.id); }; } </script> </head> <body> <input id="btn" class="myBtn" type="button" value="获取"/> </body> </html>

浏览器预览效果如下图所示。

分析:

想要获得某个属性的值,首先需要使用getElementById()等方法找到这个元素节点,然后才可以获取到该属性的值。

oBtn.id表示获取按钮的id属性值。同样的,想要获取type属性值可以写成oBtn.type,以此类推。是不是非常简单呢?不过需要特别提醒大家一点,如果想要获取一个元素的class,写成oBtn.class是错误的,正确的应该写成oBtn.className。至于为什么,我们在“9.5 创建元素”这一节已经说过了。

使用obj.attr这种方式,不仅可以用来获取静态HTML元素的属性值,还可以用来获取动态创建的DOM元素中的属性值,请看下面的例子。

举例:获取动态DOM中的属性值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { //动态创建一个按钮 var oInput = document.createElement("input"); oInput.id = "submit"; oInput.type = "button"; oInput.value = "提交"; document.body.appendChild(oInput); //为按钮添加点击事件 oInput.onclick = function () { alert(oInput.id); }; } </script> </head> <body> </body> </html>

浏览器预览效果如下图所示。

分析:

这里动态创建了一个按钮:。然后我们给这个动态创建出来的按钮加上点击事件,并且在点击事件中使用oInput.id来获取id属性的取值。

在实际开发中,更多情况下我们想要获取的是表单元素的值。其中获取文本框、单选按钮、复选框、下拉列表中的值,都是通过value属性来获取的。这些技巧在实际开发中用得非常多,小伙伴们认真掌握一下。

举例:获取文本框的值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); oBtn.onclick = function () { var oTxt = document.getElementById("txt"); alert(oTxt.value); }; } </script> </head> <body> <input id="txt" type="text"/> <input id="btn" type="button" value="获取"/> </body> </html>

浏览器预览效果如下图所示。

分析:

我们在文本框输入内容,然后点击【获取】按钮,就能获取文本框中的内容。oTxt.value表示通过value属性来获取值。我们可能会觉得很奇怪,文本框压根儿就没有定义一个value属性,怎么可以通过oTxt.value来获取它的值呢?其实对于单行文本框,HTML默认给它添加了一个value属性,只不过这个value属性是空的。也就是说,

<input id="txt" type="text"/>

其实等价于:

<input id="txt" type="text" value=""/>

其他表单元素也有类似的特点,都有一个默认的value值。此外对于多行文本框,同样也是通过value属性来获取内容的,我们可以自己测试一下。

举例:获取单选框的值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); var oFruit = document.getElementsByName("fruit"); oBtn.onclick = function () { //使用for循环遍历所有的单选框 for(var i=0;i<oFruit.length;i++) { //判断当前遍历的单选框是否选中(也就是checked是否为true) if(oFruit[i].checked) { alert(oFruit[i].value); } } }; } </script> </head> <body> <div> <label><input type="radio" name="fruit" value="苹果" checked/>苹果</label> <label><input type="radio" name="fruit" value="香蕉" />香蕉</label> <label><input type="radio" name="fruit" value="西瓜" />西瓜</label> </div> <input id="btn" type="button" value="获取" /> </body> </html>

浏览器预览效果如下图所示。

分析:

document.getElementsByName(“fruit”)表示获取所有name属性值为fruit的表单元素。getElementsByName()只限用于表单元素,它获取的也是一个元素集合,也就是类数组。

举例:获取复选框的值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); var oFruit = document.getElementsByName("fruit"); var str = ""; oBtn.onclick = function () { for(var i=0;i<oFruit.length;i++) { if(oFruit[i].checked) { str += oFruit[i].value; } } alert(str); }; } </script> </head> <body> <div> <label><input type="checkbox" name="fruit" value="苹果" />苹果</label> <label><input type="checkbox" name="fruit" value="香蕉" />香蕉</label> <label><input type="checkbox" name="fruit" value="西瓜" />西瓜</label> </div> <input id="btn" type="button" value="获取" /> </body> </html>

浏览器预览效果如下图所示。

分析:

复选框是可以多选的,我们随便选中几个,然后点击“获取”按钮,就可以得到所选中复选框的值了。

举例:获取下拉菜单的值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); var oSelect = document.getElementById("select"); oBtn.onclick = function () { alert(oSelect.value); }; } </script> </head> <body> <select id="select"> <option value="北京">北京</option> <option value="上海">上海</option> <option value="广州">广州</option> <option value="深圳">深圳</option> <option value="杭州">杭州</option> </select> <input id="btn" type="button" value="获取" /> </body> </html>

浏览器预览效果如下图所示。

分析:

在这个例子中,当我们随便选中一项,然后点击【获取】按钮,就能获取当前选中项的value值。

下拉菜单有点特殊,当用户选中哪一个option时,该option的value值就会自动变成当前select元素的value值。其中value是传给后台处理的,而标签中的文本是给用户看的。这两个值大多数时候是一样的,只是有时会不一样,这个取决于我们的开发需求。

上面我们介绍了怎么获取文本框、单选按钮、多选按钮、下拉菜单中的值,基本已经包括了所有的情况。这些技巧在实际开发中经常用到,大家要好好掌握。

二、设置HTML属性值

设置HTML元素的属性值,同样也是通过属性名来设置的,非常简单。

语法:

obj.attr = "值";

说明:

obj是元素名,它一个DOM对象,attr是属性名。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); oBtn.onclick = function () { oBtn.value = "button"; }; } </script> </head> <body> <input id="btn" type="button" value="修改" /> </body> </html>

浏览器预览效果如下图所示。

分析:

可能小伙伴们对这种写法感到有一点熟悉,事实上在“9.5 创建元素”一节中,也是使用obj.attr的方式来为元素设置属性的。当然对于动态DOM来说,我们不仅可以使用obj.attr,也可以使用下一节介绍的setAttribute()方法来实现,大家可以去试一下。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> window.onload = function () { var oBtn = document.getElementById("btn"); var oPic = document.getElementById("pic"); var flag = true; oBtn.onclick = function () { if (flag){ oPic.src = "img/2.png"; flag = false; } else { oPic.src = "img/1.png"; flag = true; } }; } </script> </head> <body> <input id="btn" type="button" value="修改" /><br/> <img id="pic" src="img/1.png"/> </body> </html>

默认情况下,预览效果如下图所示。

当我们点击【修改】按钮之后,预览效果如下图所示。

分析:

这里使用了一个布尔变量flag来标识两种状态,使得两张图片可以来回切换。