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

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

怎么在一個函數里控制一個按鈕鼠標懸浮,離開,點擊這3種狀態呢?

怎么在一個函數里控制一個按鈕鼠標懸浮,離開,點擊這3種狀態呢?

錯過了年華 2017-07-29 23:47:12
就是如果一個個的設onclick這些不是很麻煩嗎,所以我就想能不能只調用一個函數就可以完成好幾種變化,點擊背景顏色改變這類樣式變化。
查看完整描述

7 回答

已采納
?
沈流舒

TA貢獻5條經驗 獲得超0個贊

建議你去《JavaScript高級程序設計》中看下什么是重載;

如果你不想看,那么推薦你使用jQuery,在JQ中有一個函數叫做jQ.on();

方法的使用:

$('選擇器').on({

????'click':function(){

? ? ?????//在這里執行你的點擊操作

? ? ?},

????'mouseover':function(){

????????//在這里執行你的鼠標移入的操作

? ? ?},

????'mouseout':function(){

????????//在這里執行你的鼠標移出操作

????}

});

查看完整回答
反對 回復 2017-07-30
  • 沈流舒
    沈流舒
    補充一下,這個跟重載沒什么關系,舉個例子:當你一個元素有兩次或兩次以上的onclick事件的觸發,這個時候就需要用到重載,重載就是不讓你的下文代碼覆蓋上文的代碼,例如你對同一個函數寫了兩次click事件,實際上只能觸發一次click事件,就是你后書寫的那個click事件,這個是重載,而你說的這個跟重載沒什么關系,mouseover、mouseout、click這三個事件并不沖突,所以你把他們單獨的拿出來分別寫也是可以的;
?
跨越七海的_風

TA貢獻25條經驗 獲得超5個贊

你說的這種需求,策略模式是一種很好的應對,但是對于業務的擴展來說,有些時候還是不足的。

首先,一樓的說法必須得以來jQuery,在不依賴jQuery的前提下

我給出我的做法吧。

HTMLDOcument.prototype.getElementsByAttribute=function(attr){

????var?result=[];
????
????var?eles=document.getElementsByTagName("*");
????
????for(var?i=0;i<eles.length;i++){
????????if(eles[i].hassAttribute(attr)){
????????????results.push(eles[i]);
????????}
????}
????
????return?results;
};

function?strategyMethodBind=function(srcElem,eventTypes){

????for(var?item?in?eventTypes){
????????srcElem.addEventListener(eventTypes[item].type,
????????eventTypes[item].handler,false);
????}

}


window.onload=function(){

????[...document.getElementsByAttribute('strategy')].forEach(x=>{
????
????????strategyMethodBind(x,{
????????????type:"click",
????????????handler:function(){
????????????
????????????}
????????});
???
????})
}


查看完整回答
反對 回復 2017-07-30
  • 7 回答
  • 0 關注
  • 4101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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