我写了这个脚本,有一个名为“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,我是一个完整的菜鸟,所以任何帮助都会非常感激。
答案 0 :(得分:2)
QSA返回一个NodeList(基本上看起来像一个数组),文档在这里:https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll
因此,您需要比较:
var isFoo = obj.call('.test')[0].innerHTML == 'foo';
其他一些观点:
1)调用是JS中的保留字,最好选择其他东西
2)您是在尝试比较结果(您当前正在做什么)还是在尝试设置innerHTML?如果是后者,则代码应为:
obj.call('.test')[0].innerHTML = 'foo';
因为==是比较运算符,而不是赋值。