当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Js的核心:找到DOM

Js的核心:找到DOM

2018年11月28日  | 移动技术网IT编程  | 我要评论
掌握 JavaScript 的核心之一:DOM,能够熟悉DOM相关操作,了解JavaScript事件机制 一、使用getElementById()、getElementsByTagName()、childNodes、parentNode找DOM 二、使用querySelector及querySele ...

掌握 javascript 的核心之一:dom,能够熟悉dom相关操作,了解javascript事件机制

一、使用getelementbyid()、getelementsbytagname()、childnodes、parentnode找dom

 1 <!doctype html>
 2 <html>
 3 
 4 <head>
 5     <meta charset="utf-8">
 6     <title>找到dom-getelementby—</title>
 7 </head>
 8 
 9 <body>
10     <div id="wrapper">
11         <div id="news-top" class="section">
12             <h3>some title</h3>
13             <div class="content">
14                 <ul>
15                     <li><span>html</span><a href="">some link1</a></li>
16                     <li><span>js</span><a class="active" href="">some link2</a></li>
17                     <li><span>css</span><a href="">some link3</a></li>
18                     <li><span>js</span><a href="">some link4</a></li>
19                 </ul>
20             </div>
21             <img src="">
22             <p class="">some text</p>
23         </div>
24         <div id="news-normal" class="section">
25             <h3>some title</h3>
26             <div class="content">
27                 <ul>
28                     <li><span>html</span><a href="">some link1</a></li>
29                     <li><span>html</span><a href="">some link2</a></li>
30                     <li><span>js</span><a class="active" href="#">some link3</a></li>
31                     <li><span>css</span><a href="">some link4</a></li>
32                     <li><span>js</span><a class="active" href="#">some link1</a></li>
33                 </ul>
34             </div>
35             <img src="">
36             <p class="">some text</p>
37         </div>
38     </div>
39     <script>
40         function getalllistitem() {
41             // 返回页面中所有li标签
42             var list = document.getelementsbytagname("li");
43             console.log(list);
44         }
45 
46         function findallhtmlspaninonesection(sectionid) {
47             // 返回某个section下所有span中内容为html的span标签
48             var section = document.getelementbyid(sectionid).getelementsbytagname("span");
49             for (i = 0; i < section.length; i++) {
50                 if (section[i].innerhtml === "html") {
51                     console.log(section[i]);
52                 }
53             }
54         }
55 
56         function findlistitem(sectionid, spancont) {
57             // 返回某个section下,所有所包含span内容为spancont的li标签
58             var section = document.getelementbyid(sectionid).getelementsbytagname("span");
59             for (i = 0; i < section.length; i++) {
60                 if (section[i].innerhtml === spancont) {
61                     console.log(section[i].parentnode);
62                 }
63             }
64         }
65 
66         function getactivelinkcontent(sectionid) {
67             // 返回某个section下,class为active的链接中包含的文字内容
68             var section = document.getelementbyid(sectionid).getelementsbyclassname("active");
69             for (i = 0; i < section.length; i++) {
70                 console.log(section[i].innerhtml);
71             }
72 
73         }
74 
75         getalllistitem();
76 
77         findallhtmlspaninonesection("news-top");
78         findallhtmlspaninonesection("news-normal");
79 
80         findlistitem("news-top", "js");
81         findlistitem("news-normal", "js");
82         findlistitem("news-normal", "css");
83 
84         getactivelinkcontent("news-top");
85         getactivelinkcontent("news-normal");
86     </script>
87 </body>
88 
89 </html>

二、使用queryselector及queryselectorall找dom

 1 <!doctype html>
 2 <html>
 3 
 4 <head>
 5     <meta charset="utf-8">
 6     <title>找到dom-queryselector—</title>
 7 </head>
 8 
 9 <body>
10     <div id="wrapper">
11         <div id="news-top" class="section">
12             <h3>some title</h3>
13             <div class="content">
14                 <ul>
15                     <li><span>html</span><a href="">some link1</a></li>
16                     <li><span>js</span><a class="active" href="">some link2</a></li>
17                     <li><span>css</span><a href="">some link3</a></li>
18                     <li><span>js</span><a href="">some link4</a></li>
19                 </ul>
20             </div>
21             <img src="">
22             <p class="">some text</p>
23         </div>
24         <div id="news-normal" class="section">
25             <h3>some title</h3>
26             <div class="content">
27                 <ul>
28                     <li><span>html</span><a href="">some link1</a></li>
29                     <li><span>html</span><a href="">some link2</a></li>
30                     <li><span>js</span><a class="active" href="#">some link3</a></li>
31                     <li><span>css</span><a href="">some link4</a></li>
32                     <li><span>js</span><a class="active" href="#">some link1</a></li>
33                 </ul>
34             </div>
35             <img src="">
36             <p class="">some text</p>
37         </div>
38     </div>
39     <script>
40         function getalllistitem() {
41             // 返回页面中所有li标签
42             var list = document.queryselectorall("li");
43             for (i = 0; i < list.length; i++) {
44                 console.log(list[i]);
45             }
46         }
47 
48         function findallhtmlspaninonesection(sectionid) {
49             // 返回某个section下所有span中内容为html的span标签
50             var section = document.queryselector("#" + sectionid).queryselectorall("span");
51             for (i = 0; i < section.length; i++) {
52                 if (section[i].innerhtml === "html") {
53                     console.log(section[i]);
54                 }
55             }
56         }
57 
58         function findlistitem(sectionid, spancont) {
59             // 返回某个section下,所有所包含span内容为spancont的li标签
60             var section = document.queryselector("#" + sectionid).queryselectorall("span");
61             for (i = 0; i < section.length; i++) {
62                 if (section[i].textcontent === spancont) {
63                     console.log(section[i].parentnode);
64                 }
65             }
66         }
67 
68         function getactivelinkcontent(sectionid) {
69             // 返回某个section下,class为active的链接中包含的文字内容
70             var section = document.queryselector("#" + sectionid).queryselectorall(".active");
71             for (i = 0; i < section.length; i++) {
72                 console.log(section[i].textcontent);
73             }
74         }
75 
76         getalllistitem();
77 
78         findallhtmlspaninonesection("news-top");
79         findallhtmlspaninonesection("news-normal");
80 
81         findlistitem("news-top", "js");
82         findlistitem("news-normal", "js");
83         findlistitem("news-normal", "css");
84 
85         getactivelinkcontent("news-top");
86         getactivelinkcontent("news-normal");
87     </script>
88 </body>
89 
90 </html>

三、注意点:

innertext  与 innerhtml 都是打印标签之间的文本信息

1、innertext 打印标签之间的纯文本信息,会将标签过滤掉,低版本的火狐浏览器不支持,而是支持textcontent

2、innerhtml 打印标签之间的内容,包括标签和文本信息,各浏览器都支持,但是高版本的浏览器会原样打印

3、但是使用innertext 会有兼容性,低版本的火狐浏览器不支持使用,而是支持使用textcontent,因此我们需要封装一个兼容版本,以及调用方法

 1      var box = document.getelementbyid("box");
 2         调用方法
 3         var str = gettext(box);
 4         console.log(str);
 5         /**
 6          * 封装了一个获取标签之间的文本信息兼容版本函数
 7          * @param element 标签对象
 8          * @returns {*}
 9          */
10         function gettext(element) {
11             if(element.innertext) {
12                 return element.innertext;   //ie8及之前的浏览器支持,现在两者都支持
13             }else {
14                 return element.textcontent; //低版本的火狐支持
15             }
16         }

 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网