首页 > 编程笔记 > JavaScript笔记
JS innerHTML属性:获取/设置元素内容
在 JS 中,除了可以访问或设置元素的属性,使用 innerHTML 属性,还可以访问或设置元素的内容(包括子元素)。下面通过示例 1 来介绍 innerHTML 属性的使用。例 1 的功能是当输入不为空时,用户输入的文本每次发送后会连接文本框前面的 label 一起逐行显示在 div 中,同时会清空文本框内容。如果输入为空,则弹出警告对话框提示用户。
【例 1】使用 innerHTML 属性设置元素内容
注:oDiv.innerHTML+=oSpan.innerHTML+oText.value 等效于 oDiv.innerHTML=oDiv.innerHTML+oSpan.innerHTML+oText.value。图 1 所示是在文本框中先后输入两行文本并单击发送按钮的结果。

图 1:文本框输入不为空时的结果
从例 1 中可以看到,使用 innerHTML 属性,既可以访问一个元素的 HTML 内容,同时也可以设置元素的 HTML 内容。要设置元素内容,只需要把 innerHTML 属性放到
需要注意的是,例 1 中的
示例代码如下所示:
【例 1】使用 innerHTML 属性设置元素内容
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用innerHTML属性设詈div元素内容</title>
<style>
div {width:240px; height:200px; background:#f1f1f1; border:1px solid #333; padding:10px;}
</style>
<script>
window.onload = function(){
var oDiv = document.getElementById('div1');
var oSpan = document.getElementByldCspan1');
var oText = document.getElementById('text1');
var oBtn = document.getElementById('btn1.');
oBtn.onclick = function(){
if(!oText.value.match(/s*/)){ //使用正则表达式判断输入的是否为空字符
//将文本框前的 label、输入的文本、换行标签以及div原来的内容一起作为div元素的内容
oDiv.innerHTML += oSpan.innerHTML + oText.value + '<br>';
oText.value = ''; //发送信息后清空文本框
}else{
alert("请输入信息!');
}
};
};
</script>
</head>
<body>
<div id="div1"> </div>
<span id="span1">妙味:</span>
<input id="text1" type="text"/>
<input id="btn1" type="button" value="发送"/>
</body>
</html>
上述代码中的 if() 判断语句使用了正则表达式来判断输入的内容是否为空字符。代码中使用了 oSpan.innerHTML 和 oDiv.innerHTML 分别获取 span 元素和 div 元素的内容,然后,又通过 oDiv.innerHTML 将 span 元素和 div 元素的内容、文本框输入的内容以及换行标签一起作为 div 元素的内容来设置。注:oDiv.innerHTML+=oSpan.innerHTML+oText.value 等效于 oDiv.innerHTML=oDiv.innerHTML+oSpan.innerHTML+oText.value。图 1 所示是在文本框中先后输入两行文本并单击发送按钮的结果。

图 1:文本框输入不为空时的结果
从例 1 中可以看到,使用 innerHTML 属性,既可以访问一个元素的 HTML 内容,同时也可以设置元素的 HTML 内容。要设置元素内容,只需要把 innerHTML 属性放到
=的左边即可,而出现在其他位置时,innerHTML 属性都是用于访问元素的内容的。需要注意的是,例 1 中的
oDiv.innerHTML+=……这种写法,在使用循环语句对某个元素实现重复多次设置相同的 HTML 内容时,如果在循环体中使用oDiv.innerHTML+=……这样的代码来设置 HTML 内容,会对运行性能造成或多或少的影响。针对这种情况,应将重复设置的 HTML 内容先赋给一个字符串变量,然后在循环体外面再用该字符串变量设置元素的 HTML 内容。示例代码如下所示:
<script>
...
var str ='';
for(var i=0; i<2000; i++){
str += '<input type="button" value="按钮"/>';
//注意:不要使用下面的写法,否则对性能影响比较大
//oDiv.innerHTML += '<input type="button" value="按钮"/>';
}
oDiv.innerHTML += str; //在循环体外使用字符串变量设置元素内容
</script>
上述示例中之所以不能使用注释掉的那种写法,原因是,如果将代码oDiv.innerHTML+=……放到循环体中,则每次循环都要访问 oDiv 的 innerHTML 属性获取 div 的 HTML 内容,当循环次数比较大时,这样势必对运行性能有较大的影响。所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算