[英]Adding an event listener to a dynamically created div, and passing this to it
我發現了有關傳遞變量的類似問題,但沒有關於傳遞變量的問題。
我試圖基於輸入到窗體創建一個div,然后附加一個事件偵聽器,該偵聽器調用一個要求將此事件傳遞給它的事件。 我已經到了創建div的地步,並根據輸入的數據添加了內容。 因此,現在我嘗試使用.addEventListener添加onClick事件,但看來您無法通過匿名函數傳遞它。 這是我正在嘗試的代碼。
element.addEventListener("click", function(this){selectActiveCompetitor(this)});
sekectActiveCompetitor依賴於此傳遞給它,因此它可以定位正確的div
有什么解決辦法嗎?
除了上面我的評論,這是一個自動訪問我所說的this
關鍵字的示例。 單擊任何按鈕將導致該特定按鈕上的文本被警告。
<!DOCTYPE html>
<html>
<head>
<script>
"use strict";
function allByTag(tagName,parent){return (parent == undefined ? document : parent).getElementsByTagName(tagName);}
function forEachNode(nodeList, func){for (var i=0, n=nodeList.length; i<n; i++) func(nodeList[i], i, nodeList); }
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded()
{
forEachNode( allByTag('button'), function(curNode, curIndex, nodeList){ curNode.addEventListener('click', onBtnClick, false); } );
}
/*
// expanded version of the above function
//
function onDocLoaded()
{
var btns = allByTag('button');
forEachNode(btns, attachBtnHandler);
function attachBtnHandler(curNode, curIndex, nodeList)
{
curNode.addEventListener('click', onBtnClick, false);
}
}
*/
function onBtnClick(evt)
{
alert(this.textContent);
}
</script>
<style>
</style>
</head>
<body>
<button>This is btn1</button>
<button>This is btn2</button>
<button>This is btn3</button>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.