我有一個運行onload的javascript函數。它按類查找錨點標記,並根據標記中的數據添加onclick函數。我的問題是包含href的一部分的變量'h'。它將被設置爲該功能的最後評估。因此,如果h的最後一個值是「s-g123」,那麼頁面上的所有鏈接都會將此值作爲插入鏈接的值。如何在運行時修復h的值,因此是靜態的?提前致謝。javascript中的動態onclick變量範圍
// converts <a href='#g123' class="shoh"> to <a href='#g123' onclick=function() { shoh('s-g123', 'show') }">
function managelinks() {
var elems = document.getElementsByTagName('*'), i;
var h, pos;
for (i = 0; i < elems.length; i++) {
if ((elems[i].className).indexOf('shoh') > -1) {
if ((pos = elems[i].href.indexOf('#')) > -1) {
h = "s-" + elems[i].href.substr(pos + 1);
elems[i].onclick = function() {
shoh(h, 'show')
};
}
}
}
關:見問答uerySelectorAll更高效的查詢(如果您不需要支持IE6/7)另請閱讀JavaScript的關閉:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures – biziclop
感謝關閉的鏈接。這似乎是問題。必須通過重組來實現我的目標。這個任務看起來很簡單......同樣感謝querySelectorAll提示 - 看起來它可以減少代碼量,甚至可以加快速度。 – mseifert
在我的答案中看下面的例子。我也使用了'anchor_elem.hash'屬性。 – biziclop