0

我编写这个脚本是为了有一个名为“call”的方法,它充当document.querySelectorAll(). 例子:

var obj = {
    call: function( s ) { return document.querySelectorAll( s ); }
};

obj.call(".test").innerHTML == "Changed";

<p class="test">Original</p>

因此,显然,(我认为)这会将 innerHTML 值从“原始”更改为“已更改”,但不起作用。

我已经尝试过其他测试,.style.background = "red";但也没有奏效。

我在 Chrome 的错误控制台中没有看到任何错误,所以我无法弄清楚为什么这不起作用。当谈到 javascript 时,我是一个完整的菜鸟,所以任何帮助将不胜感激。

4

1 回答 1

2

QSA 返回一个 NodeList (基本上看起来和行为就像一个数组),文档在这里:https ://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll

因此,您需要比较:

var isFoo = obj.call('.test')[0].innerHTML == 'foo';

其他几点:

1) call 是 JS 中的保留字,最好选择别的

2)您是要比较结果(您当前正在做什么)还是要设置innerHTML?如果是后者,则代码应为:

obj.call('.test')[0].innerHTML = 'foo';

因为 == 是比较运算符,而不是赋值。

于 2013-01-08T22:39:42.843 回答