我已经做了很多调试,但似乎错误是在我尝试在 ae2Multi()
中使用“this”时发生的。
<html><head>
<title>Custom</title>
<style type="text/css"></style>
<script type="text/javascript">
function ae2(elementName) {
var elementObject;
var elementType = elementName.charAt(0);
if(elementType == "#") {
elementObject = document.getElementById(elementName.substr(1));
} else if(elementType == ".") {
elementObject = document.getElementsByClassName(elementName.substr(1));
} else {
elementObject = document.getElementsByTagName(elementName);
}
return elementObject;
}
function ae2Single() {
this.innerHTML = "singleIsWorking";
}
function ae2Multi() {
alert(this);
for (var i = 0; i < this.length; i++) {
this[i].innerHTML = "it really worked!";
}
}
Element.prototype.ae2Single = ae2Single;
Element.prototype.ae2Multi = ae2Multi;
window.onload = function() {
ae2(".container").ae2Multi();
}
</script></head><body><div id="containerMain">hello world!</div><div class="container">hello again!</div><div class="container">hello yet again!</div></body</html>
最佳答案
当您选择多个元素时,您将返回一个 NodeList
,而不是 Element
。所以你需要编辑 NodeList
原型(prototype):
Element.prototype.ae2Single = ae2Single;
NodeList.prototype.ae2Multi = ae2Multi;
getElementById
似乎是唯一返回 Element
的,而其余的则返回 NodeList
。
关于javascript - 通过方法传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537842/