js選中事件,js選擇框改變事件

本文目錄一覽:

匯總js事件相關及事件處理模型

js事件是為了實現用戶交互,比如當用戶滑鼠點擊或者鍵盤輸入時,瀏覽器會監聽截獲並且通知js做出反饋執行相應的函數,實現交互。

js的事件類型有很多,我們先來大概總結一下常用的JS事件

click點擊事件、mousedown滑鼠按下事件、mousemove滑鼠移動事件、mouseup滑鼠抬起事件

contextmenu右鍵出菜單事件、mouseenter/mouseover滑鼠進入事件、mouserleave/mouseout滑鼠離開事件

可通過事件對象的button屬性來區分是左鍵\滾輪\右鍵,分別對應值 0 / 1 / 2

DOM3規定:click事件只能監聽左鍵;只能通過mousedown和mouseup來判斷滑鼠鍵

keydown某鍵被按下時、keyup被鬆開時、keypress按下並且鬆開時

觸發順序:先 keydown,然後keypress,最後keyup

keydown和keypress的區別:

input:文本變化時觸發

change:聚焦或失去焦點時判斷狀態是否改變,發生改變是觸發change事件

focus:聚焦時觸發

blur:失去焦點時觸發

利用focus和blur可模擬placeholder

scroll:滾動條滾動時

load:頁面載入完觸發

abort:圖像的載入失敗

dblclick:雙擊事件

error:當載入圖像和文檔時發生錯誤

resize:窗口或者框架被重新調整大小

select:文本被選中時

reset:點擊重置按鈕時

submit:點擊提交按鈕時

接著看如何給DOM元素綁定事件處理函數

兼容性很好

但是根據js的特點,這種賦值的方式肯定會被後面的值覆蓋。因此這種方式綁定事件處理函數規則是:同一個元素同一個事件只能綁定一個處理函數。等同於第一種寫在行間。

IE8及以下不兼容

通過addEventListener綁定的方式,同個元素的同一個事件可以綁定多個處理函數,不會被覆蓋。

attachEvent跟addEventListener 基本一致,也是同一個元素的同一個事件可以綁定多個處理函數,不會被覆蓋。不同的是attachEvent可以綁定的函數是可以重複的,即即使綁定同一個函數都不會不覆蓋。

以上幾種事件綁定方式裡面的this指向有點區別:

也比較好理解,IE獨有的特殊一點指向window,其他都指向dom元素本身

封裝一個兼容性的方法,用於綁定事件:

有的時候我們希望解除事件處理函數,那怎麼辦呢?

其實解除事件處理函數也對應有辦法方法:

1. ele.onxxx = false / ‘ ‘ / null

2. ele.removeEventListener(type,fnName,false)

3. ele.attachEvent(‘on’ + type,fnName)

值得注意的是:若干綁定的事件處理函數是匿名函數,則無法解除綁定!

不知道有沒有發現,在上面綁定事件處理函數的時候,處理函數有個參數e或者叫event,其實是一個事件對象

事件對象就是處理函數裡面的一個參數,說白了就是瀏覽器打包好的一個對象自動傳入到處理函數的第一個參數中。

為了兼容IE一般這麼寫: e = e || window.event

事件對象會有個屬性target,這個target叫事件源對象,記錄可事件具體在誰身上觸發的那個源頭

同樣IE上事件源對象是e.srcElement,谷歌兩個都有

所以為了兼容IE一般獲取事件源對象是這麼來寫:

當瀏覽器發展到第四代時(IE4及Netscape4),瀏覽器開發團隊遇到了一個很有意思的問題:頁面的哪一部分會擁有某個特定的事件?想像畫在一張紙上的一組同心圓。如果把手指放在圓心上,那麼手指指向的不是一個圓,而是紙上的所有圓

兩家公司的瀏覽器開發團隊在看待瀏覽器事件方面還是一致的。如果單擊了某個按鈕,他們都認為單擊事件不僅僅發生在按鈕上,甚至也單擊了整個頁面

但有意思的是,IE和Netscape開發團隊居然提出了差不多是完全相反的事件流的概念。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕獲流。事件冒泡和事件捕獲稱為兩種事件處理模型

IE的事件流叫做事件冒泡(event bubbling), 事件冒泡是結構上(非視覺上)嵌套的函數存在事件冒泡功能,即同一事件自子元素冒泡向父元素(自底向上)

[注意]所有現代瀏覽器都支持事件冒泡

但在具體實現在還是有一些差別。IE9、Firefox、Chrome、Safari將事件一直冒泡到window對象

而事件捕獲的思想是不太具體的節點應該更早接收到事件,而最具體的節點應該最後接收到事件。事件捕獲的用意在於在事件到達預定目標之前就捕獲它

即事件捕獲是指: 結構上(非視覺上)嵌套的元素存在事件捕獲功能,即同一事件自父元素冒泡向子元素(自頂向下)

注意IE上沒有事件捕獲,Chrome和新版本的Firefox等都實現了

一個dom元素的一個事件類型綁定的一個處理函數只能存在一種事件模型,要麼事件冒泡要麼事件捕獲。正常的通過addEventListener(type,fn,false)綁定事件時,最後一個參數默認是false表示的是,事件冒泡模型。如果改成true,立即變成事件捕獲模型

如果一個dom元素的一個事件類型綁定了兩個處理函數,兩個函數的事件處理模型一個是事件冒泡一個是事件捕獲,觸發順序是先捕獲,後冒泡。

focus、blur、change、submit、reset、select等事件類型不冒泡

可以 利用事件冒泡和事件源對象可以叫事件委託給父元素

利用事件冒泡和事件源對象進行處理

優點:

性能好,不需要循環所有元素一個個綁定事件

靈活,當有其他新的子元素時,不需要重新綁定事件。

有的時候,我們不希望有冒泡功能,那我們怎麼取消事件冒泡呢?

封裝一個都好使的取消冒泡函數

有的時候我們需要阻止一些瀏覽器默認的事件

比如:表單提交、a鏈接跳轉、右鍵菜單等

有幾種方式:

參考資料:

DOM事件流的三個階段

深入理解DOM事件機制系列第一篇——事件流

JS事件匯總

JS事件模型

事件1(上)

事件1(下)

DOM級別與DOM事件

DOM事件機制解惑

事件模型

JavaScript 事件委託詳解

JavaScript 事件的學與記:stopPropagation 和 stopImmediatePropagation

event.target和event.currentTarget的區別

js怎麼區分出點擊的是滑鼠左鍵還是右鍵?

js動態生成的checkbox取值和選中事件

script type=”text/javascript”

window.onload = function() {

// 創建 input 元素

var checkbox = document.createElement(“input”);

checkbox.type = “checkbox”;

checkbox.value = “123”;

// 頁面添加 checkbox

document.body.appendChild(checkbox);

// 點擊

checkbox.onclick = function() {

if(this.checked) {

alert(“選中”);

}

else {

alert(“未選中”);

}

alert(“value: ” + this.value);

}

};

/script

如何用js實現將當前點擊的單選按鈕變為選中狀態?

代碼如下:

function doGender(gender) {

if (gender == “男”) {

gel(“radionan”).checked = true;

} else {

gel(“radionv”).checked = true;

}

}

擴展資料

JS基礎代碼:

//定義數組

var pageIds = new Array();

pageIds.push(‘A’);

數組長度

pageIds.length;

//shift:刪除原數組第一項,並返回刪除元素的值;如果數組為空則返回undefined

var a = [1,2,3,4,5];

var b = a.shift(); //a:[2,3,4,5] b:1

//unshift:將參數添加到原數組開頭,並返回數組的長度

var a = [1,2,3,4,5];

var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7

//註:在IE6.0下測試返回值總為undefined,FF2.0下測試返回值為7,所以這個方法的返回值不可靠,需要用返回值時可用splice代替本方法來使用。

js文本選中和未選中觸發事件

換個方法不行么

先取到裡面的內容

你再次點擊的時候將值放到裡面,就不會選中了哦

js 怎麼實現select選中觸發事件?

方法:

可以使用jQuery的trigger() 方法來響應事件。

定義和用法:

trigger() 方法觸發被選元素的指定事件類型。

語法:

$(selector).trigger(event,[param1,param2,…])

參數描述:

event    必需。規定指定元素要觸發的事件。可以使自定義事件(使用 bind() 函數來附加),或者任何標準事件。   

[param1,param2,…]    可選。傳遞到事件處理程序的額外參數。額外的參數對自定義事件特別有用。

實例:

觸發 select元素的change事件:

$(“button”).click(function(){

$(“select”).trigger(“change”);

});

js,監聽窗口被選中事件

可以給窗口增加獲得焦點事件就好啦。

window.onfocus=function(){// your code here)}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152620.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-13 06:05
下一篇 2024-11-13 06:05

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • 抖音外放親媽下葬事件的背後真相

    近期,一段抖音外放親媽下葬的視頻引發廣泛關注和熱議。不少人對這個事件感到震驚和憤怒,認為這種行為非常不尊重親人,觸犯了社會公德和家庭道德。但是,事情真相到底是什麼呢?我們有必要從多…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • cc.director.on事件監聽器

    本文將從多個方面詳細介紹Cocos Creator中的cc.director.on事件監聽器。 一、cc.director.on的作用和用法 cc.director.on是Coco…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27

發表回復

登錄後才能評論