亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 onmouseover() 函數與屬性 onmouseover

為什么 onmouseover() 函數與屬性 onmouseover

開心每一天1111 2022-08-04 09:32:32
我的觀點是在javascript代碼中觸發事件。我在一個元素上使用了這個函數。但它在某些情況下不起作用。onmouseoveronmouseover()這是一個演示代碼:HTML 文件:<p id="p-id">Text Text</p>外部 Javascript 文件:var myP = document.getElementById("p-id");myP.addEventListener("mouseover", function() {    this.style.backgroundColor = "red";     });// trigger the mouseover:myP.onmouseover(); // console error: onmouseover is not a function.但是當我在元素上使用屬性時,函數工作得很好:onmouseover()onmouseover="javascript code"HTML 文件:<p id="p-id" onmouseover="this.style.backgroundColor='red'">Text Text</p>外部 Javascript 文件:var myP = document.getElementById("p-id");// trigger the mouseover:myP.onmouseover(); // works well 多年來,我一直在尋找原因,但我沒有線索。
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

該屬性是以下位置的 setter/getter:onmouseoverHTMLElement.prototype


var myP = document.getElementById("p-id");

const descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'onmouseover');

console.log(descriptor);

console.log(descriptor.get.call(myP));

<p id="p-id" onmouseover="console.log('fn')">Text Text</p>


當 getter 被調用時,它將返回以前使用 setter 附加的處理程序,例如,或者它將返回內聯處理程序函數。elm.onmouseover = someFn


在上面的代碼中,處理程序既不是內聯的,也不是通過調用 setter 附加的,因此訪問元素的屬性將返回 ,這不能被調用。onmouseovernull


在下部代碼中,處理程序是內聯的,因此它通過訪問調用 getter 的屬性來返回。onmouseover


最好永遠不要使用內聯處理程序,它們有太多的問題不值得使用,并且也不要通過屬性附加處理程序(因為這樣,如果另一個腳本嘗試將處理程序附加到同一元素,它將覆蓋早期的處理程序)。.on


如果要觸發剛剛附加的偵聽器函數,可以先將該函數保存在變量中,然后調用它:


var myP = document.getElementById("p-id");

const fn = () => myP.style.backgroundColor = "red";     

myP.addEventListener("mouseover", fn);

fn();

<p id="p-id">Text Text</p>


或者通過 DOM 將事件調度到元素:


var myP = document.getElementById("p-id");

myP.addEventListener("mouseover", () => myP.style.backgroundColor = "red");

myP.dispatchEvent(new Event('mouseover'));

<p id="p-id">Text Text</p>


查看完整回答
反對 回復 2022-08-04
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號