原生js操作DOM

一、DOM操作

DOM 是 Document Object Model(文档对象模型)的缩写。
所有的DOM Element可以点击访问。

DOM操作名称方法描述
(1)获取元素
通过IDdocument.getElementById();得到一个元素
通过标签父级.getElementsByTagName();数组
通过class父级.getElementsByClassName();获取到元素数组,IE8及以下不支持
通过css选择器父级.querySelector()得到一个元素,IE7及以下不支持
父级.querySelectorAll()获取到元素数组,IE7及以下不支持
(2)增加元素
添加节点para.appendChild(node);向para添加子节点node
(3)创建节点
创建元素var para=document.createElement(“p”);在document中创建p标签元素
创建文本节点var node=document.createTextNode(“这是新段落。”);在document中创建文本节点
(4)移除元素
删除节点parent.removeChild(child);父元素删除子节点
(5)获取元素的样式
获取行间样式element.style.styleName获取行间样式,不能获取css样式表中的样式
获取样式表中的样式element.currentStyle.styleName返回的值有单位,仅IE支持
getComputedStyle(element).styleName返回的值有单位 ,标准浏览器支持(IE9及以上支持)
(6)属性操作
获取属性element.getAttribute(‘attributeName’)属性的值
element.attribute属性的值
element[‘attribute’]属性的值
设置属性值element.setAttribute(‘attributeName’)dom元素上查看会有该属性
不能通过element.attribute获取只能通过 element.getAttribute(‘attributeName’)
移除属性element.removeAttribute(‘attributeName’)dom元素查看无此属性

1.1内容操作

1.1.1表单元素

对于input这种半闭合标签,操作内容是操作它的value值。
(1) 获取value —> 元素.value
(2)设置value —> 元素.value = 值

<input type="text" id="text1">
<input type="button" value="按钮" id="btn">
<input type="text" id="text2">

js操作

var text1 = document.getElementById('text1');
var text2 = document.getElementById('text2');
var btn = document.getElementById('btn');
btn.onclick = function() {
   var t = text1.value; // 获取input元素的内容
   text2.value = t; // 设置值
}

点击按钮,id为text2的标签值会发生变化。

1.1.2闭合标签

和半闭合标签不同,闭合标签的内容都是获取innerHTML或者innerText值。
(1) 获取:元素.innerHTML    元素.innerText
(2)设置:元素.innerHTML = 新值   元素.innerText = 新值
两者区别:innerHTML可以解析字符串中的标签,常常在渲染页面的时候用字符串拼接。

document.getElementById("box").innerHTML = "<span>天气有点冷</span>";
document.getElementById("box").innerText = "天气有点冷";

1.2属性操作

1.2.1闭合标签

(1)获取属性:元素.属性名
(2)设置属性:元素.属性名 = 新值

document.getElementById("box").title = 'hobby';
//浏览器查看元素title属性

1.2.2表单元素

获取和设置与上面方法一样

 <input type="text" id="tex">
 var t = document.getElementById('tex');
 t.onclick = function() {
     t.type = 'button';
     t.value = '按钮';
 }   //点击输入框,瞬间会变成按钮

1.3 样式操作

1.3.1行间样式

  • (1)获取行间样式:

    element.style.样式名(只能获取行间样式),这样获得的属性值是带单位的.

  • (2)设置行间样式:
    • <1>元素.style.样式名 = 样式值  
    • <2>元素.style.cssText =“属性名:属性值;······” ;不推荐使用
//可以单个设置样式
var oBox = document.getElementById('box');
oBox.style.width = '200px'
oBox.style.width = '200px';
oBox.style.height = '200px';
oBox.style.backgroundColor = 'brown';
oBox.style.color = 'yellow';
oBox.style.fontSize = '30px';
//也可以写在一起
oBox.style.cssText = 'width: 200px;height: 200px;background: brown; color: yellow; font-size: 30px;';
console.log(oBox.style.width);//300px

1.3.2、行外样式

获取元素样式表中的样式。兼容性写法

<style type="text/css">
  #box{
      width: 100px;
      height: 100px;
      background-color:blueviolet;
  }
</style>
<body>
    <div id="box"></div>
</body>

<script type="text/javascript">
window.onload = function(){
 // getComputedStyle在支持的浏览器里是一个函数,在不支持的浏览器是undefined
 console.log(typeof window.getComputedStyle === 'function');
 var box =document.getElementById("box");
 if (typeof window.getComputedStyle === 'function'){
     console.log(getComputedStyle(box).backgroundColor);
     //rgb(138, 43, 226)
     console.log(getComputedStyle(box).width);//100px
     console.log(getComputedStyle(box).height);//100px
 }else{
     console.log(box.currentStyle.backgroundColor);//blueviolet
     console.log(box.currentStyle.width);//100px
     console.log(box.currentStyle.height);//100px
 }
}
</script>

封装:

/**
* @param obj 元素
* @param attr 样式名
* @returns {*} 返回带单位样式值
*/
function getStyle(obj, attr) {
   if (typeof(getComputedStyle) === 'function') {
       // 标准浏览器(IE9及以上)
       return getComputedStyle(obj)[attr];
   } else {// IE8及以下
       return obj.currentStyle[attr];
   }
}

1.4元素类(class)操作

动态的添加或者修改删除元素的类选择器,会让元素的样式动态的变化。这样静态页面的元素就会有动态的效果了。

1.4.1、获取类

获取:元素.className

1.4.2、设置类

设置:
1、元素.className = ‘className’;
2、元素.classList.add(“类名1”,“类名2”,…)

1.4.3、删除类

删除:
元素.className = ‘’;
元素.classList.remove(“类名1”,“类名2”,…)
例如:

<style type="text/css">
  .abc {width: 200px;height: 200px;background: brown;}
  .color1 {color: #fff;}
  .f30 {font-size: 30px;}
</style>
<div id="box">我就是我</div>
<script type="text/javascript">
    var oBox = document.getElementById('box');
    oBox.onclick = function() {
        oBox.className = 'abc color1 f30';
        //或者
        this.classList.add("abc")
        this.classList.add("color1")
        this.classList.add("f30")
    }
</script>

1.4.4、类名是否存在

设置:
1、元素.classList.contain(“类名”)

   var result = element.className.contain(class)//true Or false

1.4.5、切换类名

设置:
1、元素.classList.toggle(“类名”)

   element.className.toggle("类名1","类名2",···)

1.5、图片src操作

(1)获取图片src值:图片.src 一般不用
(2)设置图片src值:图片.src = 地址

   oImg.src = 'img/2.jpg';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值