我可以减少这个Javascript代码吗?

时间:2011-06-09 20:45:22

标签: javascript reduction

我可以减少

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语句中评估赋值?

5 个答案:

答案 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;
  }
}