gpt4 book ai didi

javascript - 如何在 require() 之外调用在 require() 内部定义的函数?

转载 作者:行者123 更新时间:2023-11-28 13:07:04 30 4
gpt4 key购买 nike

我正在使用 ArcGIS API for Javascript 3.21。我在 require() 中有一个函数。我希望在单击按钮时调用该函数,但该按钮位于 require() 之外。

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="//js.arcgis.com/3.7/js/esri/css/esri.css">
<style>
html, body, #map {
height: 100%;
width: 100%;
margin: 1;
padding: 1;
}
</style>

<script src="//js.arcgis.com/3.7/"></script>
<script>

var map;

require([
"esri/map",
"esri/geometry/Point",
"esri/symbols/SimpleMarkerSymbol",
"esri/graphic",
"esri/layers/GraphicsLayer",
"dojo/domReady!"
], function(
Map, Point, SimpleMarkerSymbol, Graphic, GraphicsLayer
) {
map = new Map("map", {
basemap: "gray",
center: [10,10],
zoom: 3
});

map.on("load", function() {
var graphicslayer = new GraphicsLayer();
map.addLayer(graphicslayer);
});

function hello(){
alert("hello,world!");
}

});



</script>
</head>
<body>

<button type="submit"class="searchButton"onclick="hello()">Search</button>
<div id="map"></div>

</body>
</html>

我无法在 onclick="hello()"中调用 hello(),因为 hello() 位于 require() 内部。

最佳答案

您的 hello 函数的作用域为 require 函数。您希望将其范围限制为全局对象,即您的情况下的窗口对象。所以要么:

function hello(){
alert("hello,world!");
}
window.hello = hello;

或直接

window.hello = function(){
alert("hello,world!");
}

但是您也可以直接在 JavaScript 中将 hello 函数绑定(bind)到对象的单击事件;你不必扩大你的职能范围。 dojo 库中可能有这样做的方法。直接的 javascript 方式可能类似于

var myButton = document.querySelectorAll("button.searchButton")[0];
if (myButton) {
myButton.addEventListener("click", hello);
}

关于javascript - 如何在 require() 之外调用在 require() 内部定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666868/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com