<script type="text/javascript"> 
function $(o)
{
      return "function" == typeof o ? (window.onload = o) : document.getElementById(o) || o;//具体的执行过程?
}//调用
$(function()
  {
      $("tb1").onclick = function(e){
            var e = e || window.event;
            var o = e.srcElement || e.target;//var o怎么不是bool型的?“||”到底啥意思?
            alert("第"+[o.parentNode.rowIndex+1||o.parentNode.parentNode.rowIndex+1]+"行");
      }
  }); 
</script><body>
<table id="tb1" width="100" border="3" cellspacing="2" cellpadding="2">
   <tr>
       <td>Row 1</td>
   </tr>
   <tr> 
       <td>7777<input type="text"/></td>
   </tr>
   <tr> 
       <td>Row 3<input type="button"/></td>
   </tr>
   <tr> 
       <td>Row 4</td>
   </tr>
</table></body>
弱类型语言使用的太少了,很多都不明白。请大侠解释一下,越详细越好?

解决方案 »

  1.   

    本帖最后由 net_lover 于 2010-03-16 14:54:39 编辑
      

  2.   

    "function" == typeof o ? (window.onload = o) : document.getElementById(o) || o;//具体的执行过程?先执行?前面的。如果是true则执行(window.onload = o),否则执行
     document.getElementById(o) || o
      

  3.   

    //调用
    $(function()//判断是FUNCTION,所以页面加载时调用该函数。
      {
          $("tb1").onclick = function(e){
                var e = e || window.event;
                var o = e.srcElement || e.target;//var o怎么不是bool型的?“||”到底啥意思?
                alert("第"+[o.parentNode.rowIndex+1||o.parentNode.parentNode.rowIndex+1]+"行");
          }
      }); 
    function $(o)
    {
          return "function" == typeof o ? (window.onload = o) : document.getElementById(o) || o;//具体的执行过程?
    }
    注意RETURN关键字。
      

  4.   

    var e = e || window.event;
                var o = e.srcElement || e.target;//var o怎么不是bool型的?“||”到底啥意思?
    这是根据浏览器兼容性的判断来选择返回结果是什么。
      

  5.   

    如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:* 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
    * 如果两个运算数都是对象,返回第一个对象。
    * 如果某个运算数是 null,返回 null。
    * 如果某个运算数是 NaN,返回 NaN。
    * 如果某个运算数是 undefined,发生错误。
      

  6.   

    写这代码的人,厉害啊,刚刚测试了,支持IE,还支持firefox。
    强人。
      

  7.   


    支持firefox是最基本的吧?
      

  8.   

     return "function" == typeof o ? (window.onload = o) : document.getElementById(o) || o;
    如果参数p是个函数 这将函数付给事件window.onload ,否则调用 document.getElementById(o),如果
    document.getElementById(o) 为null或者undefined,这表达式值为参数本身,
    var e = e || window.event; // 参数e,一般浏览器在onclick事件的执行函数中自动添加Event事件元数据
    但是IE的早期版本并不是这么支持的,但是可以通过window.event获取当前事件元数据
    var o = e.srcElement || e.target // 事件元数据对事件引发元素的属性不一致  
    我觉得你最大的争议在于|| 表达式的使用 首先在js中:
    1:所有对象都被认为是 true。 
    2:字符串当且仅当为空时才被认为是 false。 
    3:null 和 undefined 被认为是 false。 
    4:数字当且仅当为 0 时才是 false。 result = expression1 || expression2expression1,2 为任意表达式
    如果表达式1 为真,则不再执行表达式2 ,result等于表达式1所得结果 
    如果表达式1 为假,则执行表达式2,result等于表达式2所得的结果 同样的用法如function change(callbackfunction)
    {
       //do something     callbackfunction && callbackfunction();
    }你看此处,callbackfunction 不为null或者undefined 则执行callbackfunction()函数
    当时实际运用时可能还要判断callbackfunction是否函数
      

  9.   

    比如点击button事情对应的元素(就是button本身) 在IE里面是 Event.target ,其他浏览器可能是 Event.srcElement 
      

  10.   

    其意思是下面代码的简化与封装。
    window.onload = function() {
    document.getElementById("tb1").onclick = function(e) {
    var e = e?e:window.event;
    var o = e.srcElement?e.srcElement:e.target;
                alert("第"+[o.parentNode.rowIndex+1||o.parentNode.parentNode.rowIndex+1]+"行");
    }
    }
      

  11.   

    “||”到底啥意思?
    记住就行了e =  a ||b|| c || d
     从左往右(a,b,c,d),找结果不为假的那个,找到则将其返回,都不真,则返回最后一个(不管最后值是什么)就是找到第一个真的,找到并返回,找不到就拿最后一个