JS之DOM操作--概述、document节点属性、document节点选中页面元素、document节点创建页面元素和属性、操作页面元素属性、操作元素内容、节点操元素样式

在这里插入图片描述

一.、初识DOM

在这里插入图片描述

1.1 概述
  • DOM全称为Document Object Model,即文档对象模型
  • Document节点就是文档本身
  • DOM规定页面中所有的元素都是节点
  • Document节点在页面加载时自动创建
  • 节点是对象的另外一种叫法,在DOM规则中规定对象都称为节点
  • DOM规定html页面中所有的元素都是节点
  • document节点在页面加载时自动创建

思想:

  • 把结构化文档解析成一系列的节点,再由这些节点组成一个树状结构
  • 所有的节点和最终的树状结构,都有规范的对外接口,以达到使用编程语言操作文档的目的
  • 因此DOM可以理解成文档的编程接口
    DOM树

二、document节点属性

2.1 返回文档内部的某个节点
2.1.1 document.doctype
  • 对于HTML文档来说document对象一般有两个子节点,第一个子节点就是doctype。doctype节点是一个对象,包含了当前文档类型信息。如果当前网页没有声明DTD,该属性返回null。
  • 对于HTML5文档,doctype节点就代表
 <script>
 		var doctype = document.doctype;
        console.log(doctype);// <!DOCTYPE html>
        console.log(doctype.name);// html
</script>
2.1.2 document.documentElement
  • document.documentElement属性,表示当前文档的根节点。通常是document节点的第二个子节点,紧跟在document.doctype节点后面。
  • 对于HTML网页,该属性返回HTML节点。但是对我们来说一般都是通过documentElement节点来访问页面当中的其他子节点。
  • documentElement代表的是html标签(html元素)
  • 语法:document.documentElement
 <script>
        console.log(document.documentElement);
</script>

在这里插入图片描述

  • html并不代表整个文档,docoment代表的是文档本身也就是整个文档
 <script>
        console.log(document);
</script>

在这里插入图片描述

2.1.3 document.body
  • body属性返回当前文档的body或frameset节点,如果不存在这样的节点,就返回null。
  • 该属性是可写的,如果对其写入一个新的节点会导致原有的所有子节点被移除。
  • 语法:document.body
 <script>
        console.log(document.body);
</script>

在这里插入图片描述

2.1.4 document.head
  • head属性返回当前文档的head节点。如果当前文档有多个head,则返回第一个。
 <script>
        console.log(document.head);
</script>

在这里插入图片描述

2.2 返回文档的固有属性
  • documentURI:返回当前文档的网址。

  • document.documentURI属性所有文档都具备

  • 语法:document.documentURI

  • IE浏览器不支持documentURI属性

  • document.documentURI === document.URI

2.2.1 document.documentURI
<script>
        console.log(document.documentURI);
 </script>

在这里插入图片描述

2.2.2 document.URL
  • URL
  • 注意:本属性是只读
  • 返回当前文档的网址
  • document.URL只有HTML文档才具备
<script>
        document.URL = 'http://www.baidu.com'; //无效
        console.log(document.URL);
</script>

在这里插入图片描述

2.2.3 document.domain
  • 返回当前文档的域名
  • 如果无法获取域名,则返回null
<script>
        console.log(document.domain);
		
		//如果当前域名是百度,就关闭当前页面
        var baidu = "www.baidu.com";
        if (document.domain === baidu) {
            window.close();
        }
</script>
2.2.4 document.lastModified
  • lastModified:返回当前文档(网页)最后修改的时间戳,格式为字符串。
  • lastModified属性的值是字符串,所以不能直接用来比较。若想比较两个文档谁的日期更新,则需要转换成时间戳格式才能进行比较(if(Date.parse(doc1.lastModified) > Date.parse(doc2.lastModified)) {
    //…
    }) Date.parse()能够将时间格式字符串转换成时间戳格式
<script>
        console.log(document.lastModified); //04/10/2021 13:52:32
</script>
2.2.5 document.location
  • location:返回一个只读对象,提供了当前文档的URL信息
    在这里插入图片描述
 <script>
        console.log(document.location);
        //实现页面跳转
        document.location.href = 'http://www.baidu.com';
        console.log(document.location.href);
 </script>

注意:search是获取url中保存的信息

 	<form action="">
        <input type="text" name="userName" />
        <input type="submit" />
    </form>
    <button id="but">获取发送信息</button>
<script>
        document.getElementById("but").onclick = function() {
            console.log(document.location.search);
        }
</script>

在这里插入图片描述在这里插入图片描述

2.2.6 document.title
  • 返回当前文档的标题,该属性是可写的
 <title>我是标题头</title>
 <script>
        var title = document.title;
        title = "我是新的标题头";
        console.log(title);
</script>

在这里插入图片描述在这里插入图片描述

2.2.7 document.characterSet
  • 返回渲染当前文章的字符集
 <script>
        var character = document.characterSet;
        console.log(character); //UTF-8
</script>
2.2.8 document.readyState
  • 返回当前文档的状态
  • 共有三种可能: 加载HTML代码阶段(尚未解析完成)是“loading”;加载外部资源的阶段是"interactive";全部加载完成是"complete"。
<script>
        if (document.readyState === "complete") {
            console.log("当前页面已经加载完毕");
        }
  //这种判断方式只能判断一次,如果页面在判断时没有加载完成,那么就无法确定页面究竟是何时加载完毕

	  console.log(document.readyState);
        var timer = setInterval(function() {
            console.log(document.readyState);//loading  interactive  complete
            if (document.readyState == 'complete') {
                clearInterval(timer); //清楚定时器
            }
        }, 20);
</script>
2.3返回页面中指定元素的集合
2.3.1 document.anchors
  • 返回页面中带有name属性的a标签的集合
  	<a href="#">链接1</a>
    <a href="#" name="anchors2">链接2</a>
    <a href="#" name="anchors3">链接3</a>
    <a href="#">链接4</a>
    <a href="#">链接5</a>
<script>
        var collection = document.anchors;
        console.log(collection);//
        console.log(collection.length);//
        console.log(collection[0]);//
</script>

在这里插入图片描述

2.3.2 document.forms
  • 返回网页中所有表单
<script>
        var forms = document.forms;
        if (forms !== 0) {
            console.log("网页中有表单"); //网页中有脚本
        } else {
            console.log("网页中没有表单");
        }
</script>
2.3.3 document.images
  • 返回网页中所有图片
<script>
        var imgs = document.images;
        if (imgs !== 0) {
            console.log("网页中有图片"); //网页中有脚本
        } else {
            console.log("网页中没有图片");
        }
</script>
2.3.4 document.links
  • 返回网页中所有链接元素(即带有href属性的a标签)
<script>
        var links = document.links;
        if (links !== 0) {
            console.log("网页中有链接"); //网页中有脚本
        } else {
            console.log("网页中没有链接");
        }
</script>
2.3.5 document.scripts
  • 返回网页中所有的脚本
<script>
        var scripts = document.scripts;
        if (scripts !== 0) {
            console.log("网页中有脚本"); //网页中有脚本
        } else {
            console.log("网页中没有脚本");
        }
</script>

三、document节点选中页面元素

3.1 querySelector()
  • 描述:本方法用来选中页面元素,根据指定的选择器进行筛选
  • 如果有多个节点满足匹配条件则返回第一个匹配的节点
  • 如果没有发现匹配的节点则返回null
  • querySelector是匹配的选择器,如果是id选择器那么则应为 document.querySelector(‘#名’);
  • 语法:document.querySelector(‘选择器名’);
 	<p id="p1">这是p1</p>
    <p id="p2" name="p2_name" class="pp">这是p2<span>这是内部span</span></p>
    <h2>这是h2</h2>
    <p class="pp" name="p2_name">这是p3</p>
    <span>这是span标签</span>
<script>
        var p = document.querySelector('.pp');
        var p2_span = p.querySelector('span');
        console.log(p2_span);
</script>

在这里插入图片描述

3.2 querySelectorAll()
  • 描述:本方法用来选中页面元素,根据指定的选择器进行筛选。
  • 如果有多个元素满足条件,则返回这些元素构成的集合
  • 语法:document.querySelectorAll(‘选择器名’);

注意:

  • 返回的结果是一个节点列表,不是数组,但能够像数组一样使用列表
  • 如果查找失败不是返回null,而是返回一个空的节点列表
	<p id="p1">这是p1</p>
   <p id="p2" name="p2_name" class="pp">这是p2<span>这是内部span</span></p>
   <h2>这是h2</h2>
   <p class="pp" name="p2_name">这是p3</p>
   <span>这是span标签</span>
  <script>
        var pList = document.querySelectorAll('.pp');
        console.log(pList[1]);
 </script>

在这里插入图片描述

3.3 getElementById()
  • 返回匹配指定ID属性的元素节点(返回的是一个对象)
  • 参数 id 是一个大小写敏感的字符串
 	<p id="p1">这是p1</p>
    <p id="p2" name="p2_name" class="pp">这是p2<span>这是内部span</span></p>
    <h2>这是h2</h2>
    <p class="pp" name="p2_name">这是p3</p>
    <span>这是span标签</span>
 <script>
        var p2 = document.getElementById('p2');
        console.log(p2);
        // 打印我们返回的元素对象,这样可以更好的查看里面的属性和方法
        console.dir(p2);
</script>

3.4 getElementsByTagName()
  • 返回所有指定标签的元素(对象)集合
 	<p id="p1">这是p1</p>
    <p id="p2" name="p2_name" class="pp">这是p2<span>这是内部span</span></p>
    <h2>这是h2</h2>
    <p class="pp" name="p2_name">这是p3</p>
    <span>这是span标签</span>
<script>
        var p = document.getElementsByTagName('p');
        console.log(p[1]);
        console.log(p.length);
</script>

在这里插入图片描述

3.5 getElementsByClassName()
  • 返回符合指定类名的所有元素(集合)
 	<p id="p1">这是p1</p>
    <p id="p2" name="p2_name" class="pp">这是p2<span>这是内部span</span></p>
    <h2>这是h2</h2>
    <p class="pp" name="p2_name">这是p3</p>
    <span>这是span标签</span>
<script>
        var pp = document.getElementsByClassName('pp');
        console.log(pp[1]);
</script>

在这里插入图片描述

3.6 getElementsByName()
  • 用于选择拥有name属性的HTML元素
 	<p id="p1">这是p1</p>
    <p id="p2" name="p2_name" class="pp">这是p2<span>这是内部span</span></p>
    <h2>这是h2</h2>
    <p class="pp" name="p2_name">这是p3</p>
    <span>这是span标签</span>
<script>
        var p2_name = document.getElementsByName('p2_name');
        console.log(p2_name[0]);
</script>

在这里插入图片描述

3.7 querySelector系列与getElementsBy系列方法的区别
  • querySelector系列属于W3C中的Selectors API(JS)规范
  • getElementsBy系列属于W3C的DOM规范
  • querySelector系列基本能被所有浏览器支持
  • getElementsBy系列通常只有在考虑兼容性的时候才被提起(尽管两者功能相似)
  • querySelector系列接收的参数是一个css选择器名
  • getElementsBy系列接收的参数只能是单一的className、tagName和name
  • querySelectorAll()返回的是一个静态节点列表
 	<ul>
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
<script>
		var ul = document.querySelectorAll('ul')[0];
        var list = ul.querySelectorAll("li");
        for (var i = 0; i < list.length; i++) {
            ul.appendChild(document.createElement("li"));
        }
</script>

在这里插入图片描述

  • getElementsBy系列返回的是一个动态节点列表
	<ul>
        <li>li</li>
        <li>li</li>
        <li>li</li>
        <li>li</li>
    </ul>
 <script>
 		var ul = document.querySelectorAll('ul')[0];
        var list = ul.getElementsByTagName("li");
        for (var i = 0; i < list.length; i++) {
            ul.appendChild(document.createElement("li"));
        }
</script>

此时会进入死循环状态:
在这里插入图片描述

四、document节点创建页面元素和属性

4.1 document.createElement()
  • 描述:创建一个页面元素
  • 语法:document.createElement(“标签名”)
  • 注意:本方法创建的页面元素不会直接显示在页面中,而是默认存在于内存中
 <script>
        var p = document.createElement('p');
        console.log(p);
 </script>

在这里插入图片描述

4.2 fatherNode.appendChild()
  • 描述:给某个节点添加子节点
  • 语法:fatherNode.appendChild(子节点)
  • fatherNode:父标签对象
 <script>
        // 创建元素
        var p = document.createElement('p');

        // 添加元素
        document.body.appendChild(p);
</script>

在这里插入图片描述

4.3 fatherNode.removeChild()
  • 描述:通过父标签对象将自己的一个子标签删除
  • 语法:fatherNode.removeChild(子节点)
  • fatherNode:父标签对象
    // 创建元素
    var p = document.createElement("p");

    // 添加元素
    document.body.appendChild(p);

   // 删除元素
   document.body.removeChild(p);
4.4 createTextNode()
  • 描述:创建文本节点
 <script>
        var p = document.createElement('p');

        //p.innerHTML='这是一个p标签';
        var p_text = document.createTextNode('这是p段落');
        // 或
        //p.innerHTML = '这是p段落';
        //document.body.appendChild(p);
        

        p.appendChild(p_text);

        document.body.appendChild(p);
</script>

在这里插入图片描述

4.5 createAttribute()
  • 描述:创建一个新的属性对象节点
  • 语法:document.createAttribute(‘属性名’);

注意:

  • 本方法创建的是属性节点,不是css属性节点
  • 创建的属性节点使用value=‘’;进行赋值
  • 创建的属性节点使用setAttributeNode()方法绑定到元素上。
 <script>
        // 创建元素
        var p = document.createElement('p');

        // 创建文本节点
        var p_Text = document.createTextNode('我是新创建的p标签');

        //将文本节点加入到p标签里
        p.appendChild(p_Text);

        //创建节点属性
        p_alg = document.createAttribute('align');

        // 给节点属性赋值
        p_alg.value = 'center';

        // 将节点属性加入到对应的文本节点中
        p.setAttributeNode(p_alg);

        //将创建的元素加入到body中
        document.body.appendChild(p);
</script>

在这里插入图片描述

五、操作元素–页面元素属性操作

修改 HTML 文本中的标签属性,浏览器图形界面也会发生对应的改变
修改 HTML 文本中的标签属性,DOM 中的对象属性也会发生对应的改变
当 DOM 中的对象属性发生了变化,浏览器图形界面也会发生对应的改变
当浏览器图形界面发生了改变,DOM 中的对象属性也会发生对应的改变
在这里插入图片描述
在这里插入图片描述

1 用户修改了图形界面中标签的内容,DOM中的标签对象的属性会同步发生改变,HTML文本不会发生改变

    <input type="text" id="username" value="张三">
    <input type="button" value="测试" id="btn">
    <script>
        let btn = document.querySelector("#btn");
        let username = document.querySelector("#username")
        btn.onclick = function(){
            console.log(username.value);
            console.log(username.getAttribute("value"));
        }
    </script>

2 修改了HTML文本中标签的内容,图形界面和DOM中的对象属性都会发生改变

    <input type="text" id="username" value="张三">
    <input type="button" value="测试" id="btn">
    <script>
        let btn = document.querySelector("#btn");
        let username = document.querySelector("#username");

        btn.onclick = function(){
            username.setAttribute("value","李四");
            console.log(username.value);
        };
    </script>

3 修改了 DOM 中的对象属性,图形界面会发生改变,HTML文本不会发生改变

    <input type="text" id="username" value="张三">
    <input type="button" value="测试" id="btn">
    <script>
        let btn = document.querySelector("#btn");
        let username = document.querySelector("#username");

        btn.onclick = function(){
            username.value = "李四";
            console.log(username.getAttribute("value"));
        };
    </script>
5.1 getAttribute()

getAttribute(‘属性名’); 获取元素属性值

<div class="div">我的div</div>
var div = document.querySelector(".div");
div.setAttribute("style", "width:200px; height:200px;border:2px #ccc solid;");
console.log("getAttribute的值为:" + div.getAttribute('style'));

在这里插入图片描述

5.2 setAttribute()

setAttribute(‘属性名’,‘属性值’); 设置/修改/新增元素属性

	<h2 style="color: aquamarine;">雨季</h2>
    <button>点我</button>
<script>
    var h2 = document.querySelector('h2');
    document.querySelector('button').onclick = function() {
        h2.setAttribute('style', 'color:red;');
    }
</script>

在这里插入图片描述
在这里插入图片描述

5.3 removeAttribute()

removeAttribute(‘属性名’); 删除元素属性

<div class="div">我的div</div>
var div = document.querySelector(".div");
div.setAttribute("style", "width:200px; height:200px;border:2px #ccc solid;");
console.log("getAttribute的值为:" + div.getAttribute('style'));

在这里插入图片描述

//当在实例2的基础之上加上下面这句后
div.removeAttribute('style');

在这里插入图片描述

六、操作元素–操作元素内容

innerHTML/innerText/textCoontent都能获取元素的内容

6.1 innerText

从起始位置到终止位置的内容,但它去除html标签,同时空格和换行也会去掉

        div,
        p {
            width: 400px;
            height: 30px;
            line-height: 30px;
            color: #fff;
            background-color: pink;
        }
    <button>显示当前系统时间</button>
    <div>某个时间</div>
    <p>1123</p>
        // 当我们点击了按钮,  div里面的文字会发生变化
        // 1. 获取元素 
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        // 2.注册事件
        btn.onclick = function() {
            // div.innerText = '2022-5-10';
            div.innerHTML = getDate();
        }

        function getDate() {
            var date = new Date();
            // 我们写一个 2022年 5月 10日 星期二
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var dates = date.getDate();
            var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
            var day = date.getDay();
            return '今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day];
        }
        // 我们元素可以不用添加事件
        var p = document.querySelector('p');
        p.innerHTML = getDate();

请添加图片描述

6.2 innerHTML

从起始位置到终止位置的全部内容,包括 html 标签,同时保留空格和换行

    <div></div>
    <p>
        我是文字
        <span>123</span>
    </p>
        // innerText 和 innerHTML的区别 
        // 1. innerText 不识别html标签 非标准  去除空格和换行
        var div = document.querySelector('div');
        div.innerText = '<strong>今天是:</strong> 2019';
        //div.innerText += '<strong>今天是:</strong> 2019';
        // 2. innerHTML 识别html标签 W3C标准 保留空格和换行的
        // div.innerHTML = '<strong>今天是:</strong> 2019';
        // 这两个属性是可读写的  可以获取元素里面的内容
        var p = document.querySelector('p');
        console.log(p.innerText);
        // console.log(p.innerHTML);

在这里插入图片描述

6.3 innerText 、 innerHTML以及textCoontent的区别
  • innerHTML获取的内容包含标签,innerText/textCoontent获取的内容不包含标签
  • innerHTML/textCoontent获取的内容不会去除两端的空格,innerText获取的内容会去除两端的空格
  • 无论通过innerHTML/innerText/textCoontent设置内容,新的内容都会覆盖原来的内容
  • 如果通过 innerHTML 设置数据,数据中包含标签,会转换成标签后再添加
  • 如果是通过innerText/textCoontent设置数据,数据中包含的标签不会转换成标签,会当做字符串直接设置
        setText(oDiv, "www.baidu.com");

        function setText(obj, text) { //obj--对象 text--文本
            //判断对象中是否有 textContent 属性
            if ("textContent" in obj) {
                obj.textContent = text;
            } else {
                obj.innerText = text;
            }
        }

七、操作元素–操作元素样式

7.1 style
  • 描述:用来读写和设置元素的 行内 样式
  • 语法:元素节点.style.xxx

** 注意:**

  • a.将横杠从CSS属性名中去除,然后将横杠后的第一个字母大写(比如:backgroundColor…)
  • b.CSS属性名是JavaScript保留字的,在属性名之前需要加上字符串“css”
  • c.style对象的属性值都是字符串,而且包括单位。
  • d.通过js添加的样式都是行内样式,会覆盖掉同名的css样式
<script>
    	var h2 = document.createElement('h2');
        h2.innerHTML = '百度';


        // 方式1
        // var h2_style = document.createAttribute('style');
        // h2_style.value = 'text-align:center;color:red';
        // h2.setAttributeNode(h2_style);


        //方式2
        // h2.setAttribute("style", "text-align:center;color:red");


        // 方式3
        h2.style.textAlign = 'center';
        h2.style.color = 'red';
        // h2.style.cssFloat = 'left';


		//方式4,见紧接着下面的 cssText 属性

        document.body.appendChild(h2);
</script>

在这里插入图片描述

7.2 cssText属性
  • 描述:可以用来读写或删除整个style属性
  • 语法:元素节点.style.cssText=‘css样式’
<script>
    // 创建元素
    var h2 = document.createElement('h2');

    // 在元素内添加内容
    h2.innerHTML = '百度';

    // 给元素设置相关样式  h2.style.cssText等价于 h2.style.value
    h2.style.cssText = 'color: #f40; text-align: center; font-size: 16px;';

    // 将创建的元素加入到页面中
    document.body.appendChild(h2);
</script>

在这里插入图片描述

注意:

  • 删除整个 style 属性可以用 xxx.cssText=" ";
  • cssText 对应的是HTML元素的style属性,因此不用改写css属性名
7.3 元素节点的style属性方法

针对的是 style 属性里面的某一个属性名和值

  • setProperty(propertyName,value) 设置某个css属性
  • getPropertyValue(propertyName) 读取某个css属性
  • removeProperty(propertyName) 删除某个css属性
  • 这三个方法的第一个参数,都是css属性名,且不用改写连线词
<script>
    var divStyle = document.querySelector('div').style;

    //divStyle.setProperty('background-color', 'blue');

    //console.log(divStyle.getPropertyValue('background-color'));//red

    divStyle.removeProperty('background-color')
</script>
7.4 className属性
  • 通过 元素.className 来设置元素的样式
  • 适合于样式较多或者功能复杂的情况
  • 如果想要保留原先的类名,我们可以按照如下示例的方式做 多类名选择器
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        
        .change {
            background-color: purple;
            color: #fff;
            font-size: 25px;
            margin-top: 100px;
        }
    <div class="first">文本</div>
    <script>
        // 1. 使用 element.style 获得修改元素样式  如果样式比较少 或者 功能简单的情况下使用
        var test = document.querySelector('div');
        test.onclick = function() {
            // 2. 我们可以通过 修改元素的className更改元素的样式 适合于样式较多或者功能复杂的情况
            // 3. 如果想要保留原先的类名,我们可以这么做 多类名选择器
            // this.className = 'change';
            this.className = 'first change';  // 或下面这种写法
            this.className += ' change';
        }

请添加图片描述

7.5 获取元素样式–getComputedStyle(对象)

通过style属性只能获取到行内样式的属性值,获取不到CSS设置的属性值(例如:oDiv.styyle.width)

如果想获取到CSS设置的属性值,必须通过getComputedStyle方法获取(例如:window.getComputedStyle(oDiv).width)
该方法返回一个CSS对象,该对象中存储的是一个标签经过计算之后的最终样式,最终样式中包含了写在内部样式和外部样式中的内容,但是该CSS对象的样式是只读的,也就是我们无法通过该对象来修改样式

7.6 classList

标签对象.classList
获取一个标签对象的所有class值,保存在一个对象中,提供了一个函数add,可以向class属性中添加一个值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1 {
            width: 200px;
            height: 200px;
            border: 1px solid orangered;
        }

        .pink {
            background-color: pink;
        }

        .red {
            background-color: red;
            border-radius: 10px;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <script>
        let box1 = document.getElementById("box1");
        box1.classList.add("pink");
        box1.classList.add("red");
        box1.classList.remove("pink");
        // 判断
        console.log(box1.classList.contains("pink"));// false
    </script>
</body>
</html>

在这里插入图片描述

八、操作元素–修改元素属性以及表单属性

8.1 修改元素属性–src
    <button id="ldh">刘德华</button>
    <button id="zxy">张学友</button> <br>
    <img src="images/ldh.jpg" alt="" title="刘德华">
        // 修改元素属性  src
        // 1. 获取元素
        var ldh = document.getElementById('ldh');
        var zxy = document.getElementById('zxy');
        var img = document.querySelector('img');
        // 2. 注册事件  处理程序
        zxy.onclick = function() {
            img.src = 'images/zxy.jpg';
            img.title = '张学友思密达';
        }
        ldh.onclick = function() {
            img.src = 'images/ldh.jpg';
            img.title = '刘德华';
        }

请添加图片描述

修改其他元素属性依次类推,比如:

  • 输入框的对象.value
    1.文本框、密码框 value 代表的是它们的值,通过value能够读取或设置文本框或密码框的值
    <button>按钮</button>
    <input type="text" value="输入内容">
    <script>
        // 1. 获取元素
        var btn = document.querySelector('button');
        var input = document.querySelector('input');
        // 2. 注册事件 处理程序
        btn.onclick = function() {
            // input.innerHTML = '点击了';  这个是 普通盒子 比如 div 标签里面的内容
            // 表单里面的值 文字内容是通过 value 来修改的
            input.value = '被点击了';
            // 如果想要某个表单被禁用 不能再点击 disabled  我们想要这个按钮 button禁用
            // btn.disabled = true;
            this.disabled = true;
            // this 指向的是事件函数的调用者 btn
        }
    </script>

2.单选框和多选框的value属性,代表的是提交到服务器的数据,这个value值通常是不去做修改的
3.下拉框的value属性,可以用于设置某一个下拉选项为选中状态 下拉框的值=选中的值
4.下拉框中option属性,代表的是提交到服务器的数据,如果没有value提交的是文本,因此通常不做修改

  • input标签对象.type
  • 单选框和多选框.checked
    <input type="checkbox" class="single">1
    <input type="checkbox" class="single">2
    <input type="checkbox" class="single">3
    <input type="checkbox" id="all">全选
   
    <script>
        /**
         * 点击全选,所有单选全部选中
         * 再次点击全选,所有单选按钮全部不选中
         * 当所有单选全部选中时,全选按钮选中
         * 当全选状态时,某一个单选按钮未选中,则全选按钮未选中
        */
       //1.实现全选
       let allChecked = document.querySelector("#all");
       let sings = document.querySelectorAll(".single");

       // 全选
       allChecked.onclick = function(){
           for(let i = 0; i < sings.length; i++){
                sings[i].checked = allChecked.checked;
           }
       };

       // 单选
       sings.forEach(element => {
            element.onclick = function(){
               let flag = true;
               for(let i = 0; i < sings.length; i++){
                   if(!sings[i].checked) {
                        flag = false;
                        break;
                   }
               }
            allChecked.checked = flag;
        };
       })
    </script>

请添加图片描述

  • a标签的 href
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img {
            width: 300px;
        }
    </style>
</head>

<body>
    <img src="images/s.gif" alt="">
    <div>上午好</div>
    <script>
        // 根据系统不同时间来判断,所以需要用到日期内置对象
        // 利用多分支语句来设置不同的图片
        // 需要一个图片,并且根据时间修改图片,就需要用到操作元素src属性
        // 需要一个div元素,显示不同问候语,修改元素内容即可
        // 1.获取元素
        var img = document.querySelector('img');
        var div = document.querySelector('div');
        
        // 2. 得到当前的小时数
        var date = new Date();
        var h = date.getHours();
        
        // 3. 判断小时数改变图片和文字信息
        if (h < 12) {
            img.src = 'images/s.gif';
            div.innerHTML = '亲,上午好,好好写代码';
        } else if (h < 18) {
            img.src = 'images/x.gif';
            div.innerHTML = '亲,下午好,好好写代码';
        } else {
            img.src = 'images/w.gif';
            div.innerHTML = '亲,晚上好,好好写代码';

        }
    </script>
</body>

</html>

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值