javascript - 通过方法传递数组

标签 javascript arrays parameter-passing

我已经做了很多调试,但似乎错误是在我尝试在 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/

相关文章:

java - 为什么只有我们尝试添加的最后一个值重复存储在数组列表中

sql - 模式中所有表的 PL/PGSQL 动态触发器

javascript - 返回数组中的特定对象值

asp.net-mvc - MVC : pass parameter to action using Jquery. ajax()

javascript - WebPack 将模块解析为对象而不是函数

javascript - 如何从下拉菜单选择中显示图像?

javascript - 为什么 Bower 建议忽略缩小的源文件?

javascript - 为什么我不能禁用ajaxToolkit :AsyncFileUpload

c - 如何将参数从 Makefile 传递给程序?

c - Berkeley DB 段错误 - __bamc_put 参数未对齐?