我可以减少
function n()
{
var a;
if(a = document.getElementById('fb0'))
{
a.onclick = i0;
document.getElementById('fb1').onclick = i1;
}
}
到
function n()
{
if(document.getElementById('fb0').onclick = i0)
{
document.getElementById('fb1').onclick = i1;
}
}
我现在没有调试器。我知道document.getElementById('fb0')
会返回一个值,因为第一个代码段工作正常。但它是否需要在if语句中评估赋值?
答案 0 :(得分:1)
不是真的;如果getElementById('fb0')
没有返回任何内容,那么您的网页就会出现错误,而在第一种情况下则不会。
答案 1 :(得分:1)
要检查“document.getElementById('fb0')”是否返回一个元素或null,第二个版本不会这样做,如果没有id为“fb0”的元素,则会抛出错误。如果你不在某个时候从DOM中删除“fb0”元素,那么第二个版本就可以了。
答案 2 :(得分:1)
不,你不能。
document.getElementById('fb0')
,正如函数名称所示,返回ID为html element
的{{1}}。之后,您将访问属性fb0
。但它失败了它会破坏剧本。
在第一个场景中,您测试分配是否有效,是否表示该元素存在,并且仅在该元素存在时才执行。
这些是不同的行为。
答案 3 :(得分:0)
如果document.getElementById('fb0')
不存在,那将会失败。 document.getElementById('fb0').onclick
在这种情况下意义不大。
答案 4 :(得分:0)
如果按ID进行大量DOM选择,请缩短该方法的版本:
function byId( id ) { return document.getElementById(id); };
function n() {
var a;
if(a = byId('fb0')) {
a.onclick = i0;
byId('fb1').onclick = i1;
}
}
在这种情况下,在条件内进行分配不会保存任何字符。这与声明的长度相同。
function byId( id ) { return document.getElementById(id); };
function n() {
var a = byId('fb0');
if(a) {
a.onclick = i0;
byId('fb1').onclick = i1;
}
}