我对此感到很愚蠢,但是我在主要的Dojo require脚本中有一个命名函数,该脚本的目的是在被click事件调用时运行。但是,该函数在加载页面时运行,而不在click事件上运行。

<script>
require(["esri/map", "dojo/domReady!"], function(Map){
    var map = new Map("map");
    testNode = document.getElementById("testNode");
    testNode.onclick = test();

    function test() {
        alert("test");
    }
}
</script>

<body>
    <div id="testNode">Click Here To Test</div>
    <div id="map></div>
</body>


页面加载后,将立即弹出“测试”警报,并且单击事件没有任何反应。

最佳答案

当您键入

testNode.onclick = test();


您正在调用函数test,并将函数的返回值传递给testNode.onclick。您应该将函数test的引用分配给testNode.onclick

testNode.onclick = test;

关于javascript - Dojo脚本中的Javascript函数无需调用即可运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24770013/

10-11 08:20