关于display:none;和id特性的一些需要注意的地方
关注点一:
display:none;一旦用于某个元素,那个这个元素在页面中就不再占据位置。
visibility:hidden;用于某个元素时,这个元素还会占据位置。
关注点二:
即使使用了display:none;只是在dom树中其不再显示了,但是,文件中还有这个元素(废话!)。
关注点三:
我们知道一旦某一个元素拥有id特性,那么这个id名就会成为全局变量被调用,值得注意的是,这个id只能有一个! 如果一个页面中有两个id,那么我们直接使用id名称并关联事件时,将不再生效(这时可以根据控制台的地址此时的button为undefined)。如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF8"> <title>获取验证码的倒计时</title> <style> .first_button{ background-color: red; } </style> </head> <body> <button id="button" class="first_button">这是第一个</button> <button id="button">这是第二个</button> <script> button.onclick = function () { alert("d"); } </script> </body> </html>
关键点四:
在上述观点下,我们需要知道,如果使用document.getElementBtId()就可以获取到元素,但永远只能获取到第一个。
关注点五:
上述代码显然不能alert。但是也别天真地以为只要你将其中一个元素display:none;就可以!! 因为document.getElementById()方法从dom中获取元素中才不会理你的display特性呢! 而是只能获取其中的一个,结果就是还是不行,如下所示:
<!DOCTYPE html> <html> <head> <meta charset="UTF8"> <title>获取验证码的倒计时</title> <style> .first_button{ display: none; } </style> </head> <body> <button id="button" class="first_button">这是第一个</button> <button id="button">这是第二个</button> <script> var button = document.getElementById("button"); console.log(button.className); </script> </body> </html>
总结:如果页面比较复杂,尽量不要直接使用id作为全局变量来调用,以防止出错(即一个都获取不到), document.getElementById还可以获取到一个呢!!