最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機立即綁定

btn是一個按鈕的節(jié)點名,那么btn.onclick="createa()";為什么不能再點擊按鈕時調(diào)用creata()函數(shù)呢?

// btn.onclick="createa()";

? ? ?btn.setAttribute("onclick", "createa()");

這兩行代碼為什么不是等價的?但是第二行代碼測試可行!


正在回答

3 回答

是不是這個意思:對象.屬性=值;如果一個函數(shù)沒有返回值,是不能放在=右邊的,

0 回復 有任何疑惑可以回復我~

只能來自問自答了:

js是事件驅(qū)動的,一個節(jié)點可以發(fā)生很多種事件,包括click事件。在js中,當節(jié)點發(fā)生某一個事件時,可以為該事件綁定一個處理函數(shù)。也就是類似的

var btn=document.getElementById("myBtn")

btn.onclick?=?function(){createa(url,text)}

所要注意的是,這個節(jié)點的onclick屬性(有人爭議這是個事件,我也覺得應該是個事件),需要賦給一個函數(shù)類型的值(或者說應該給它綁定一個函數(shù)),才可以處理事件。

但是createa()并不是一個函數(shù),你可以說你定義了一個名叫createa的函數(shù),但createa()【也就是加了一對括號的createa】,是函數(shù)執(zhí)行了之后的結(jié)果,createa()是等價于createa這個函數(shù)的返回值的。在createa函數(shù)里,只是給body內(nèi)添加了一個a標簽,并沒有返回值,所以默認的結(jié)果就是undefined,也就是說非要給createa()確定一個值的話,把它打印出來就會顯示undefined。

那么如果寫成

btn.onclick?=createa();

實際上是等價于

btn.onclick?=?undefined;

顯然undefined是不能作為節(jié)點事件的處理函數(shù)的。

但是,也不是一定要加上function(){},你可以寫成這樣:

btn.onclick?=createa;

雖然createa()不是函數(shù),但createa卻是函數(shù),是可以作為節(jié)點事件的處理函數(shù)的,但是又因為這里定義的createa函數(shù)是需要兩個參數(shù)的,所以直接調(diào)用的話,會造成函數(shù)沒有參數(shù)傳入,產(chǎn)生undefined的結(jié)果,還在考慮ing,有興趣的同學可以回復我一起試驗。


0 回復 有任何疑惑可以回復我~
#1

犀利一下下 提問者

已做完,可實現(xiàn),提前在函數(shù)內(nèi)做好參數(shù)設定就行了
2015-08-09 回復 有任何疑惑可以回復我~
#2

慕函數(shù)6472736 回復 犀利一下下 提問者

我此刻也遇到這個問題。3Q
2015-09-01 回復 有任何疑惑可以回復我~
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>無標題文檔</title>
</head>
<body>
<script?type="text/javascript">
var?main?=?document.body;
//創(chuàng)建鏈接
?
function?createa(url,text)
{
????var?a=document.createElement("a");
????a.innerHTML=text;
????a.href=url
????a.style.color="red";
??main.appendChild(a);
????//?window.open("http://yifanck.cn","_blank")?
}
//?調(diào)用函數(shù)創(chuàng)建鏈接
????var?btn?=?document.createElement("input");
????btn.type="button";
????btn.value="顯示慕課網(wǎng)鏈接";
???//?var?url="http://yifanck.cn";
????//text="慕課網(wǎng)";
????//btn.onclick=createa(url,text);?
????btn.onclick=createa('http://yifanck.cn','慕課網(wǎng)');?
????//??btn.setAttribute("onclick",?"createa('http://yifanck.cn','慕課網(wǎng)')");
????btn.style.backgroundColor="red";
????main.appendChild(btn);?
?
</script>?
</body>
</html>


0 回復 有任何疑惑可以回復我~
#1

犀利一下下 提問者

注釋掉的部分是我自己試驗做的,可以不用管,就看最后 btn.onclick=createa('http://yifanck.cn','慕課網(wǎng)'); // btn.setAttribute("onclick", "createa('http://yifanck.cn','慕課網(wǎng)')");這兩行的區(qū)別就好了
2015-08-09 回復 有任何疑惑可以回復我~
#2

犀利一下下 提問者

問題中的btn.onclick="createa()"用法有錯誤,已經(jīng)在上面貼的代碼中作了修改,去掉了引號,因為onclick是事件,對應的應該是函數(shù),不需要加引號。但是修改之后仍有新問題,就是沒有點擊按鈕時直接就在網(wǎng)頁中顯示出來“慕課網(wǎng)”鏈接了,比較奇怪為什么會這樣;但是用btn.setAttribute("onclick", "createa('http://yifanck.cn','慕課網(wǎng)')")的話就可以實現(xiàn)點擊按鈕之后再生成“慕課網(wǎng)”鏈接,所以想問問這兩行代碼再功能上的區(qū)別以及注意事項。
2015-08-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

btn是一個按鈕的節(jié)點名,那么btn.onclick="createa()";為什么不能再點擊按鈕時調(diào)用creata()函數(shù)呢?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號