//创建节点
var a1=document.createElement('div');
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="创建" id="btn">
<div id="box">
</div>
<script>
// 模拟数据
var arr=["苹果",'橘子','梨子'];
var btn=document.getElementById('btn');
var box=document.getElementById('box');
btn.onclick=function () {
var ul=document.createElement('ul');
box.appendChild(ul);
for(var i=0;i<arr.length;i++){
var data=arr[i];
var li=document.createElement('li');
//把li放到DOM树中,并且重新绘制
ul.appendChild(li);
// 设置li的显示内容
// 有兼容性
setInnerText(li,data);
}
}
// 设置标签之间的内容
function setInnerText(element,content) {
// 判断当前浏览器时否支持innerText
if(typeof element.innerText==="string"){
element.innerText=content;
}
else {
element.textContent=content;
}
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="创建" id="btn">
<script>
var btn=document.getElementById('btn');
btn.onclick=function () {
document.write('<p>我是动态创建的</p>')
}
</script>
</body>
</html>
点击之后
注意:这个方法会把之前整个页面覆盖掉,所以这个方法很局限,用的会很少
代码:
网页上:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="创建" id="btn">
<div id="box">
</div>
<script>
var btn=document.getElementById('btn');
btn.onclick=function () {
var box=document.getElementById('box');
box.innerHTML='<p>我是属性创建的</p>'
}
</script>
</body>
</html>
结果·:他只是写进去 不覆盖
应用数据交互
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="创建" id="btn">
<div id="box">
</div>
<script>
// 模拟数据
var arr=["苹果",'橘子','梨子'];
var btn=document.getElementById('btn');
btn.onclick=function () {
var box=document.getElementById('box');
box.innerHTML='<ul>';
for(var i=0;i<arr.length;i++){
box.innerHTML+=`<li>${arr[i]}</li>`;
}
box.innerHTML+='</ul>'
// var box=document.getElementById('box');
// box.innerHTML='<p>我是属性创建的</p>'
}
</script>
</body>
</html>
点击之后:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="创建" id="btn">
<div id="box">
</div>
<script>
// 模拟数据
var arr=["苹果",'橘子','梨子'];
var btn=document.getElementById('btn');
btn.onclick=function () {
var box=document.getElementById('box');
// 优化 有个dom树每当修改就对dom树重新来操作
var content='<ul>';
for(var i=0;i<arr.length;i++){
content+=`<li>${arr[i]}</li>`;
}
content+='</ul>'
// var box=document.getElementById('box');
box.innerHTML=content
}
</script>
</body>
</html>
innerHtml>creatElement>document.write
父节点.appendChild(新的子节点);
父节点.insertBefore(新的子节点,作为参考的子节点)
<div class="box11">
<div class="box12">生命壹号</div>
</div>
<div class="box21">
<div class="box22">永不止步</div>
</div>
上方结构中,子盒子box12是在父亲box11里的,子盒子box22是在父亲box21里面的。现在,如果我调用方法box11.appendChild(box22),最后产生的结果是:box22会跑到box11中(也就是说,box22不在box21里面了)。这是一个很神奇的事情:
父节点.removeChild(子节点);
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
var a=document.getElementsByTagName('ul')[0];
a.removeChild(document.getElementsByTagName('li')[0])
</script>
解释:用父节点删除子节点,必须要指定是删除那个子节点
node1.parentNode.removeChild(node1);
要复制的节点.cloneNode(); //括号里不带参数和带参数false,效果是一样的。
要复制的节点.cloneNode(true);
括号里带不带参数,效果是不同的。解释如下:
不带参数/带参数false:只复制节点本身,不复制子节点。
带参数true:既复制节点本身,也复制其所有的子节点。
replaceNode=pareNode.replacrChild(newChild,oldChild);
元素节点.属性名;元素节点[属性名];
<body>
<img src="images/1.jpg" class="image-box" title="美女图片" alt="地铁一瞥" id="a1">
<script type="text/javascript">
var myNode = document.getElementsByTagName("img")[0];
console.log(myNode.src);
console.log(myNode.className); //注意,是className,不是class
console.log(myNode.title);
console.log("------------");
console.log(myNode["src"]);
console.log(myNode["className"]); //注意,是className,不是class
console.log(myNode["title"]);
</script>
</body>
元素节点.getAttribute(“属性名称”);
console.log(myNode.getAttribute("src"));
console.log(myNode.getAttribute("class")); //注意是class,不是className
console.log(myNode.getAttribute("title"));
myNode.src = "images/2.jpg" //修改src的属性值
myNode.className = "image2-box"; //修改class的name
myNode.setAttribute("src","images/3.jpg");
myNode.setAttribute("class","image3-box");
myNode.setAttribute("id","你好");
元素节点.removeAttribute(属性名);
myNode.removeAttribute("class");
myNode.removeAttribute("id");
<body>
<div id="box" title="主体" class="asdfasdfadsfd">我爱你中国</div>
<script>
var div = document.getElementById("box");
//采用方式一进行set
div.aaaa = "1111";
console.log(div.aaaa); //打印结果:1111。可以打印出来,但是不会出现在标签上
//采用方式二进行set
div.setAttribute("bbbb","2222"); //bbbb作为新增的属性,会出现在标签上
console.log(div.getAttribute("aaaa")); //打印结果:null。因为方式一的set,无法采用方式二进行get。
console.log(div.bbbb); //打印结果:undefined。因为方式二的set,无法采用方式一进行get。
</script>
</body>