function test(name)
{
    var obj = document.getElementById(name);
    if (!obj) { //这里的obj是个元素对象,为什么可以作为判断的条件,它是通过什么标准来判断是true还是false的?
        //省略....
    }
}function clear(e, popid) {
   e = window.event || e;  //双竖线(||)在javascript中不是表示或的意思吗?在这里是什么呢?e等于window.event或者等于e?
   var s = e.relatedTarget || e.toElement;
   //省略...
}

解决方案 »

  1.   

    “ if (!obj) {”是判断obj是否存在,就是页面里面是否有ID为“name”的元素,有的话就是true。“e = window.event || e”不是说e等于window.event或者等于e,而是e等于window.event与e做或运算后的结果。
      

  2.   

    如果元素没有定义,那么 document.getElementById() 结果就为undefined,取反后为true
    可以看看undefined,null,NaN这几个的区别双竖线(||)是或,一般用来在赋值的时候给定一个默认值 
    上面的函数是用来兼容多浏览器的
      

  3.   


    var obj = document.getElementById(name);
     if (!obj) { //这里的obj是个元素对象,为什么可以作为判断的条件,它是通过什么标准来判断是true还是false的?
    不管是DOM对象还是普通对象都是对象哇,当然都可以拿来判断,javascript是弱类型的哇。
    e = window.event || e的确是或关系,当前面window.event存在,e就等于window.event。当然一个判断来就好理解了。通过||后面的是默认值。
      

  4.   

    !!xxx 是为了判断是否存在xxx,若不为 0 null undefined的话 返回true。
    ||的执行方式是,如果前面为false则继续判断后面的,如果前面为true停止执行。
    比如
    var ss = undefined||465464;
    alert(ss);//弹出来的是465464
    var ss = 1 || 2;
    alert(SS);//弹出来的一定是1
    相似的还有&&运算符。
    var aa = true;//这里不一定为aa赋值,还可以是一个函数,然后执行结果返回布尔值就可以
    aa&&alert('我执行了');
    //上面的代码等价于  if(aa)alert('我执行了');