JS 中的 event?event:window.event什么意思?求详解。

<scripttype="text/javascript>functionTest(event){event=event?event:window.event;}<scr... <script type = "text/javascript>
function Test(event) {
event = event ? event : window.event;
}
<script>

<input type ="button" value = "clickme" onclick = "Test(this)">

请问:
1,“onclick = "Test(this)"”中的this代表什么?
2,“event = event ? event : window.event; ”应该怎样理解?
a),三元运算符中的问号前面不是应该是个bool值吗?是不是在JS中“undefined”在三元运算符的问号前出现时 可以理解为false?
b),“onclick = "Test(this)"”中的this可以改成event吗?为什么?
c),如果这是个没有参数的方法(函数),我可以在方法中通过“event”获取这个既没有ID也没有name的button的value吗?如下:
<script type = "text/javascript>
function Test() {
alert(event.value);
}
<script>

<input type ="button" value = "clickme" onclick = "Test()">

请区别IE和火狐进行说明,万分感谢。

对其功能我略懂,但是其原理不懂,求详细说明。
不好意思,<script>少打了个/,
"text/javascript>少打了个",- -!
展开
 我来答
qzmer1104
2013-04-16 · TA获得超过440个赞
知道小有建树答主
回答量:148
采纳率:100%
帮助的人:181万
展开全部

1、this 表示这个<input> 元素,等同于document.getElementById;

2、a)你的理解是正确的,但是不仅只有undifined会被强制转换。

      js的弱类型,让他可以申明后赋任何类型的值。

因此除了bool型的false,number类型的0,String类型的空串,还有null在三元运算符或者判断条件时都会被转成false

其他还有一些,可以看一看比较基础的javascript书和《javascript高级程序设计》,可谓一阅扫百惑,比在网上别人一知半解的讲述了解的更彻底。

b)通过上面的解答,应该知道为什么不能用event代替this了吧

c)js对于函数的定义是非常松,即使你在函数定义时未写任何参数,或者你定义的参数有多个,但是你调用时,一个参数也不填,也不会出错的。

js函数内默认有个变量,保存你的入参叫:arguments

他是一个数组,下标从0开始,

所以获取event可以写成

function Test(){
var event = window.event||arguments[0];
}

在ie下,事件对象是在全局的,也就 window下,做为window的一个属性

 在其他浏览器,都做为方法的第一个参数传入,所以这样写是为了兼容

 

要获取这个button的值,可以先获取这个对象,event既然是事件,肯定是某对象触发的

所以有这要一个方法

ie下是event.srcElement

其他浏览器是event.target

所以获取这个对象和获取事件对象的值可以这样写

function Test(){
var event = window.event||arguments[0],
//target 就是这个对象
target = event.srcElement||event.target,
//这个对象的值
targetValue = target.value;
}
coke_bug
2013-04-16 · TA获得超过100个赞
知道答主
回答量:31
采纳率:0%
帮助的人:27万
展开全部
1:this代表点击元素的事件源对象
2:ie的event在全局变量中,其它标准浏览器event做为事件的第一个参数传入。不过一般用e=e||window.event;
a:是的,undefined,null,0,false,""都是假
b:不可以,onclick做为元素属性this已是浏览器的事件源对象了,又不是通过addEventListener绑定的。
c:不可以。别用onclick="xxx()",尝试用addEventListener来绑事件,就能得到。
追问
问题2我还是不太理解,能不能麻烦你把我当小白再详细解释一下这一句。谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式