第一段代码显式的设置了 doc[j].hasAttribute(temp)===true ,循环体会执行
而第二段没有,循环体不会执行
doc[j].hasAttribute(temp)的执行结果本来就是 true 和 false
那么第二段代码的循环体为什么不会执行呢?
var doc = document.getElementsByTagName('*');
for (var j = 0; j < doc.length; j++) {
if (doc[j].hasAttribute(temp)===true) {
element = doc[j]; //会执行
var doc = document.getElementsByTagName('*');
for (var j = 0; j < doc.length; j++) {
if (doc[j].hasAttribute(temp)) {
element = doc[j]; //不会执行
1
Lpl 2015-10-21 19:41:35 +08:00 via Android
我不明白大括号在哪结尾的
|
2
domty 2015-10-21 19:50:48 +08:00
我觉得上面那个如果执行了,下面那个也应该执行的
试一下在 for 循环里 log 下 doc[j].hasAttribute(temp)的结果比较下吧 typeof 也 log 下 |
3
feiyuanqiu 2015-10-21 20:03:33 +08:00 via iPad
temp 是个变量,看一下你第二段代码有没有给 temp 赋值呢
|
4
w88975 2015-10-21 20:27:05 +08:00
如果两段代码没问题的话,请检查你的 temp 变量是否一致。
|
5
isbase OP @w88975
@feiyuanqiu @domty @Lpl 完整代码附上 function $(selector) { var str = selector.split(' '), temp, element; for (var i = 0; i < str.length; i++) { if (str[i].indexOf('#') === 0) { temp = str[i].replace('#', ''); element = document.getElementById(str2); } else if (str[i].indexOf('.') === 0) { temp = str[i].replace('.', ''); console.log(str2); element = document.getElementsByClassName(str2)[0]; } else if (str[i].indexOf('[') === 0 && str[i].indexOf('=') === -1) { temp = str[i].replace('[', '').replace(']', ''); console.log(temp) var doc = document.getElementsByTagName('*'); console.log(temp) for (var j = 0; j < doc.length; j++) { console.log(temp) if (doc[j].hasAttribute(temp)===true) { console.log(temp) element = doc[j]; //alert('true') } } } } return element; } |