首页 > IT职业 > IT职场 > JS文档对象模型DOM——且听风吟720
DOM(Document Object Model),文档对象模型(是什么,可以用来干什么)
var div = document.getElementById("div");//返回id值为div的元素
var div = document.getElementsByTagName("div");//返回所有div元素组成的类数组对象
var div1 = document.getElementsByTagName("div")[0];//返回所有div元素中的第一个
var len = div.length;//返回div元素的数量(Number类型)
var mydiv = document.getElementById("div");
var iden = mydiv.getAttribute("id");//获得ID为div元素的ID属性值
var mydiv = document.getElementById("div");
mydiv.setAttribute("class","mydiv");//把div元素的class属性值设置为mydiv
var mydiv = document.getElementById("div");
mydiv.removeAttribute("class");//删除div元素的class属性,即为空
var myDiv = document.getElementById("div");
div.style.background="blue";//ID值为div的元素的背景颜色被设置成为蓝色
var mydiv = document.getElementById("div");
var inner = mydiv.innerHTML;//获取ID为div的元素的内部的内容
//如果有内部嵌套标签则连同嵌套标签和文档一并返回
mydiv.innerHTML = "<p>Hello, world</p>"//内部套上p标签,文本内容为hello,world
var mydiv = document.getElementById("div");
mydiv.className;//返回ID为div元素的class属性,未设置时,控制台无输出
mydiv.className = "mydiv";//给div元素设置class属性为mydiv
事件,即文档/浏览器窗口发生的一些特定的交互瞬间
window.onload=function(){}//页面加载完毕后运行匿名函数function内部指令
var div = document.getElementById("div");
function myalert1(){alert("你的鼠标放在一个div上面");}
var myAlert = function myalert2(){alert("你已经移出了div");}
div.onclick=function(){alert("你点击了一个div");}
div.onmouseover=myalert1();
div.onmouseout=myAlert;//鼠标移入后移出时触发,注意此处只要用变量名,不需要函数名
var div = document.getElementById("div");
div.onmousemove=function(){console.log("你在div里面移动了");}//在div里移动,控制台打印
div.onmousedown=function(){console.log("你点击了div");}
div.onmouseup=function(){console.log("你松开了div");}//点击和松开时控制台打印
var username = document.getElementById("username");
//当光标在username输入框,执行函数
username.onfocus=function(){p.innerHTML="请输入用户名!");}
//当光标离开username输入框,执行函数
username.onblur=function(){p.innerHTML="用户名输入正确!";)}
//根据选项调整页面的背景颜色
function changeBack(){
var div1 = document.getElementById("mydiv");
var menu = document.getElementById("changeColor");
menu.onchange=function(){
//可通过下拉菜单的options来创建类数组,通过selectedIndex访问选定的元素下标
var bg = menu.options[menu.selectedIndex].value;
div1.style.background=bg;
}
}
window.onload=changeBack;//注意事件触发时调用函数无需()
<form action="post" id="test1">
<input type="text">
<input type="submit" value="提交" id="test2">
</form>
<script>
window.onload=myHere;
function myHere(){
var tijiao = document.getElementById("test1");
//注意此处onsubmit事件必须绑定在表单元素上才可以,绑定在提交按钮上无效
tijiao.onsubmit=function(){alert("谢谢提交");}
}
</script>
//创建一个li节点
var li = document.createElement("li");
//创建一个text节点并把其添加到li节点中
var text = document.createTextNode("hello world");
li.appendChild(text);
<div id="box">
我是div
<p>我是p标签</p>
<!--我是一个捣蛋的注释-->
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
</div>
<script>
var box = document.getElementById('box');
console.log(box.innerText);//控制台只输出“我是div 我是p标签 li1 li2 li3”
box.innerText="<p>我是新的p标签</p>";//div中内容变成<p>我是新的p标签</p>
</script>
//对所有类型的浏览器通用的innerText方法
//读取版本
function getInnerText(element){
if(typeof element.textContent == "string"){
return element.textContent;
}
else{
return element.innerText;
}
}
//写入版本
function writeInnerText(element,text){
if(typeof element.textContent == "string"){
text = element.textContent;
}
else{
text = element.innerText;
}
}
//思路:判断当前节点是否有子节点,如果有则重复调用函数,遍历所有子节点,否则结束
var s = "";
//space为传入的连接符号,node为建树的起始节点
function travel(space,node){
if(node.tagName){
s += space + node.tagName + "<br/>";
}
var len = node.childNodes.length;
for(var i = 0;i < len;i++){
travel(space+"*",node.childNodes[i]);
}
}
travel("",document);
document.write(s);
<div id="box">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</div>
<script>
var box = document.getElementById("box");
var nodes = box.childNodes;
console.log(nodes[1]);//得到box1这个div(空白节点也算入item里了)
console.log(nodes.item(1));//得到box1这个div(空白节点也算入item里了)
console.log(nodes.length);//结果为7(空白节点也算入length)
</script>
function makeArray(nodelist){
var arr = null;
try{
return Array.prototype.slice.call(nodelist);//把nodelist转换成数组
}
catch(e){
arr = new Array();
for(var i=0,len=nodelist.length;i<len;i++){
arr.push(nodelist[i]);
}
}
return arr;
}
<div id="box">
<div id="box1">我是div1</div>
<div name="box2">我是div2</div>
<div name="box2">我是div3</div>
</div>
<script>
var box = document.getElementsByTagName("div");
console.log(box.namedItem('box2'));//返回我是div2这个div
</script>
<div name="box1">这个是错误的元素</div>
<div id="box1">这个才是正确的元素</div>
<div id="box1">这个是另一个正确的元素</div>
<button id="button1">点我</button>
<script>
function getElBId(){
var btn = document.getElementById("button1");
btn.onclick=function(){
var box = document.getElementById("box1");
console.log(box.innerHTML);//打印“这才是正确的元素”
}
}
window.onload=getElBId;//低版本IE下,会打印出“这个是错误的元素”
</script>
//思路:获取元素后判断该元素的id是否显示设置
//是的话,判断id是否为该值,如果不是该值,用document.all方法来获取文档中
//所有name和id为指定值的元素,一个个判断id值是否为给定值
var getElementById = function(id){
var el = document.getElementById(id);
//此处,v在IE中被解析为v,其他浏览器中解析为垂直制表符(可理解成空格)
//v1随后被转化为字符串v1/数字1,加号试图转化为数字(IE转化成NaN)
//取反后IE为true,其他为false
if(!+"v1"){
if(el && el.id === id){return el;}
else{
var els = document.all[id],
n = els.length;
for(var i = 0;i < n;i++){
if(els[i].id === id){return els[i];}
}
}
}
return el;
}
//思路:(未完待续)
<ul id="box1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
var ul = document.getElementById('box1');
var cs = box1.firstElementChild;
ul.appendChild(cs);//ul的顺序改成2341
</script>
<ul id="box1">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
var ul = document.getElementById('box1');
var li = document.createElement('li');
var text = document.createTextNode('5');
li.appendChild(text);
var li2 = ul.children.item(1);
ul.insertBefore(li,li2);//在第二个li前面插入新的li元素
ul.insertBefore(li,null);//
</script>
ul.replaceChild(li,li2);//把ul里的li2替换成li
<ul id="ul">
<li></li>
</ul>
<script>
var ul = document.getElementById('ul');
ul.cloneNode();//只拷贝ul这个节点,不包括内部的li
ul.cloneNode(true);//拷贝ul和内部的li
</script>
<div id="div">hello
world
</div>
<script>
var div = document.getElementById('div');
div.normalize();//div内部的文本会拼接成一个文本
</script>
<div id="div">helloworld
</div>
<script>
var div = document.getElementById('div');
div.splitText(5);//div内部第五个字符开始往后的成为一个新的字符串
</script>
var div = document.getElementById('div');
var test1 = document.createAttribute("xxx");
test1.nodeValue='hello';
div.attributes.setNamedItem(test1);//把test1这个属性值添加到div元素上
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3316/viewspace-2823540/ ,如需转载,请注明出处,否则将追究法律责任。