问题描述
我是OpenLayers的新手,我试图了解为什么我的html似乎忽略了我创建的任何javascript函数。当我在javascript文档中创建函数时,它确实适用于地图,但是当我使用HTML为该函数创建按钮时,它不起作用。我处于生产模式,因此openlayers api与node.js一起运行。这是我的html:
.btn {
font-size: 5vw;
}
这是我的javascript:
<!DOCTYPE html>
<html>
<head>
<Meta charset="utf-8">
<title>Mapa prueba01</title>
<style>
#map {
width: 1000px;
height: 800px;
}
</style>
</head>
<body>
<div id="map"></div>
<p id="demo">párrafo</p>
<script src="./index.js"></script>
<input type="button" id="boton" value="boton capa" onclick="funcionCapa()"/>
</body>
</html>
谢谢大家
解决方法
<script>
标签是在body标签结束之前使用的,原因是所有HTML元素都在<script>
标签之后被加载,并在html元素上执行js实现。
将下面的行放在结束<body>
标签上方。
<script src="./index.js"></script>
以便可以执行funcionCapa()
。
修复该问题的唯一方法似乎是在javascript文档中创建函数,然后在CSS中为其赋予样式,如本示例所述:https://openlayers.org/en/latest/examples/custom-controls.html
谢谢你们
,当您尝试使用DOM元素上的事件属性(在您的情况下为onclick)调用函数时,该函数应该是全局的。您可能在应用程序中使用了诸如包裹或webpack之类的捆绑器,它可以转换代码并创建JavaScript模块。除非您使用window对象显式声明它们,否则您声明的所有函数和变量都将成为局部变量。
window.funcionCapa = function() {
capa1.setVisible(false);
}
然后以这种方式称呼他们
<input type="button" id="boton" value="boton capa" onclick="window.funcionCapa()"/>
在您的情况下,您可能会收到错误“ funcionCapa未定义”,因为funcionCapa是本地函数,您无法从事件属性onclick进行访问。
您最好完全避免在DOM元素上使用事件属性,而应使用JavaScript绑定事件。