在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 原生的JavaScript綁定onclick事件卻產(chǎn)生onload的效果?

原生的JavaScript綁定onclick事件卻產(chǎn)生onload的效果?

在用原生JavaScript的對象綁定的方式綁定onclick事件, 出來的實(shí)際效果卻類似于onload的效果.
想要鼠標(biāo)點(diǎn)擊按鈕彈窗提示, 可是實(shí)際上卻是頁面一加載就彈窗提示, 點(diǎn)擊反而沒有效果.

為此, 我嘗試了三種方式:

  1. 實(shí)名函數(shù), 在按鈕屬性中調(diào)用(屬性綁定). OK!
  2. 匿名函數(shù), 屬性綁定和對象綁定均OK!
  3. 適應(yīng)函數(shù), 賦值給按鈕對象的屬性onclick(對象綁定), 就出現(xiàn)了上文所說的錯(cuò)誤!Error

請看代碼片:
1.對象綁定事件(失敗)

//設(shè)置點(diǎn)擊按鈕//
<button id="b"  >點(diǎn)擊</button>
<script type="text/javascript">
//定義實(shí)名函數(shù)fun(), 實(shí)現(xiàn)彈窗效果//
function fun() {
alert("xxxx");
}

document.getElementById("b").onclick = fun();  //?: onclick 怎么成了onload的效果?

2.匿名函數(shù)綁定(成功)

//設(shè)置點(diǎn)擊按鈕//
<button id="b"  >點(diǎn)擊</button>
<script type="text/javascript">
//定義匿名函數(shù)fun(), 實(shí)現(xiàn)彈窗效果//
document.getElementById("b").onclick = function(){
   alert("xxxx");
}

3.實(shí)名函數(shù), 屬性綁定(成功)

//設(shè)置button的屬性onclick綁定fun()//
<button id="b"  onclick="fun()">點(diǎn)擊</button>
<script type="text/javascript">
//定義實(shí)名函數(shù)//
function fun() {
    alert("xxxx");
}

為什么第一種方式偏偏失敗呢? 這是什么機(jī)制導(dǎo)致的?

回答
編輯回答
冷眸

lz我貌似知道問題所在了!
請看圖片:
圖片描述

2018年7月18日 06:38
編輯回答
命于你

補(bǔ)充一下,行內(nèi)的js代碼onclick="fun()"這樣就需要加括號,還有其他事件也是,會解析引號中的可執(zhí)行代碼,還有setTimeout和setInterval方法也類似:

setTimeout(alert(1),3000);
setTimeout("alert(2)",3000);
setInterval(alert(3),3000);
setInterval("alert(4)",3000);
//1
//3
//2
//4
//不加引號立即執(zhí)行

之前學(xué)習(xí)也也遇到這樣的疑問。

2018年1月21日 15:02
編輯回答
久礙你

覺得你在某些方面的理解不對,javascript中,函數(shù)是一等公民,因此可以進(jìn)行賦值等操作。

但是 fun() 帶括號是對函數(shù)的執(zhí)行,所以先執(zhí)行fun函數(shù),然后返回值賦值給了onclick

xxx.onclick = fun 是將函數(shù) fun 賦值給onclick,函數(shù)沒有執(zhí)行。

可以分別查看 funfun() ,一個(gè)是function,一個(gè)是結(jié)果的返回值

console.log(fun);
console.log(fun());

不是因?yàn)槟涿瘮?shù)的原因,根本原因還是函數(shù)執(zhí)行的問題

xxx.onclick = (function(){})() 這個(gè)也是匿名函數(shù),但是這個(gè)匿名函數(shù)執(zhí)行了,所以賦值的是結(jié)果,而不是函數(shù)

2018年9月11日 14:40
編輯回答
扯機(jī)薄

還有其他事件也是: happy wheels full version and moto x3m

2018年9月5日 20:09