<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>
弱类型语言使用的太少了,很多都不明白。请大侠解释一下,越详细越好?
document.getElementById(o) || o
$(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关键字。
var o = e.srcElement || e.target;//var o怎么不是bool型的?“||”到底啥意思?
这是根据浏览器兼容性的判断来选择返回结果是什么。
* 如果两个运算数都是对象,返回第一个对象。
* 如果某个运算数是 null,返回 null。
* 如果某个运算数是 NaN,返回 NaN。
* 如果某个运算数是 undefined,发生错误。
强人。
支持firefox是最基本的吧?
如果参数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是否函数
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]+"行");
}
}
记住就行了e = a ||b|| c || d
从左往右(a,b,c,d),找结果不为假的那个,找到则将其返回,都不真,则返回最后一个(不管最后值是什么)就是找到第一个真的,找到并返回,找不到就拿最后一个