[英]Get active DOM element, when event.target is XMLHttpRequest
我需要獲取單擊元素的屬性值,但我有一個 ajax 單擊請求,在這種情況下 event.target 是 XMLHttpRequest 而不是單擊的 DOM 元素。 在這種情況下如何獲取單擊的 DOM 元素?
// Parsing and makeup.
function showDescription(XMLObj){
var parser = new DOMParser(),
XMLDoc = XMLObj.responseText,
parsedXMLDoc = parser.parseFromString(XMLDoc, 'text/xml'),
eventTarget = event.target,
descContent = document.getElementById('description') ;
// Conditional actions.
};
};
// Create request.
function loadAsync(url, callback) {
var request;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
request.open("GET", url, true);
request.send(null);
request.onreadystatechange = requestProcess;
} else if(window.ActiveXObject){
request = new ActiveXObject('Microsoft.XMLHTTP');
if (request) {
request.open("GET", url, true);
request.send(null);
request.onreadystatechange = requestProcess;
}
}
function requestProcess() {
if (request.readyState == 4) {
if (request.status == 200) {
if (typeof callback == 'function') {
callback(request)
}
}
}
};
};
// Define event listener for each menu element.
function showDescListener(){
var descPars = document.getElementById('description-paragraphs'),
descParLi = descPars.getElementsByTagName('li');
for (var i = 0; i < descParLi.length; i++){
descParLi[i].addEventListener('click', function(event) {loadAsync('/description/', showDescription)}, false);
}
};
改變
function showDescription(XMLObj){
至
function showDescription(XMLObj, target){
然后改變
descParLi[i].addEventListener('click', function(event) {loadAsync('/description/', showDescription)}, false);
至
descParLi[i].addEventListener('click', function(ev) {loadAsync('/description/', function(request) { showDescription(request, ev.target); })}, false);
然后在showDescription
中使用target
。
此更改捕獲在閉包中單擊按鈕時的事件,然后在回調中使用該事件。 換句話說,請注意回調 function 是如何使用ev
參數的——調用回調時會保留ev
的值,然后將其target
屬性(您想要的 DOM 元素)傳遞給showDescription
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.