遇到一个 JavaScript 的问题

2015-10-21 18:00:19 +08:00
 isbase

第一段代码显式的设置了 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]; //不会执行
2310 次点击
所在节点    JavaScript
10 条回复
Lpl
2015-10-21 19:41:35 +08:00
我不明白大括号在哪结尾的
domty
2015-10-21 19:50:48 +08:00
我觉得上面那个如果执行了,下面那个也应该执行的
试一下在 for 循环里 log 下 doc[j].hasAttribute(temp)的结果比较下吧 typeof 也 log 下
feiyuanqiu
2015-10-21 20:03:33 +08:00
temp 是个变量,看一下你第二段代码有没有给 temp 赋值呢
w88975
2015-10-21 20:27:05 +08:00
如果两段代码没问题的话,请检查你的 temp 变量是否一致。
isbase
2015-10-21 20:47:48 +08:00
@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;
}
w88975
2015-10-21 21:34:59 +08:00
@isbase 你的 str2 呢?
isbase
2015-10-21 21:41:14 +08:00
@w88975 str2 忘记改成 temp
w88975
2015-10-21 21:45:43 +08:00
@isbase 我在 chrome 下测试了你贴的代码,并没有出现你所说的问题
w88975
2015-10-21 21:49:03 +08:00
isbase
2015-10-21 21:56:38 +08:00
@w88975 用$("[class]")应该可以重现我的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/229930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX