DomReady未定义
时间: 2024-11-25 13:32:21 浏览: 5
"DomReady未定义"通常是指在JavaScript编程中遇到的一个错误,当你尝试在文档加载完成之前执行依赖于`window.DomReady`或类似的函数时,可能会看到这个错误。`DomReady`是一个在页面上DOM元素准备就绪时触发的事件或回调函数,但在现代浏览器中,已经不再直接支持这种做法,而是推荐使用DOMContentLoaded事件或者库如jQuery的$(document).ready()。
例如,如果你试图像下面这样使用:
```javascript
window.onload = function(){
// code that depends on DOM being ready
};
```
但在现代JavaScript中,更推荐这样做:
```javascript
document.addEventListener('DOMContentLoaded', function() {
// 在这里编写依赖DOM的内容
});
```
如果在某个项目中遇到"DomReady未定义",可能是因为你正在使用的库已经过时,或者是直接引用了旧版本的库文件。检查你的脚本引用,并更新到支持DOMContentLoaded事件的版本即可解决问题。
相关问题
declare function domready(callback: () => void): void; 是什么
declare function domready(callback: () => void): void; 是一种函数声明语法,在编程中用于声明一个叫做 "domready" 的函数。这个函数接受一个叫做 "callback" 的参数,类型为 () => void,表示一个不接受任何参数并且没有返回值的函数。当 DOM(文档对象模型)准备就绪时,也就是页面加载完成并且可以操作其中的元素时,会自动调用这个声明的函数。
通常在网页开发中,我们需要对页面进行各种操作,例如修改元素内容、添加事件监听等等。但是在网页加载完成之前,我们无法获取到页面中的元素或者执行其他的操作,因为此时页面的 DOM 结构还没准备好。
所以,为了在 DOM 准备就绪后执行一些操作,我们可以使用 domready 这个函数来注册一个回调函数。当页面加载完成之后,浏览器会调用这个回调函数,以执行我们希望在文档准备就绪时执行的代码。
简而言之,declare function domready(callback: () => void): void; 是用于在 HTML 文档加载完成之后执行一些操作的函数声明语法。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>通过属性查询地图服务中的信息</title> <link rel="stylesheet" href="https://js.arcgis.com/3.39/esri/css/esri.css"> <!-- <link rel="stylesheet" type="text/css" href="./css/esri.css" /> --> <link rel="stylesheet" href="https://js.arcgis.com/3.40/esri/themes/calcite/dijit/calcite.css"> <script src="https://js.arcgis.com/3.41/"></script> <script> require(["esri/map", //加载地图组件 "dojo/dom", "dojo/on", "esri/InfoTemplate", "esri/graphic", "esri/geometry/Point",//加载点对象组件 "esri/symbols/SimpleMarkerSymbol", "esri/geometry/Extent",//加载范围组件 "esri/layers/FeatureLayer", //加载FeatureLayer地图组件 // "esri/dijit/FeatureTable", "esri/layers/WebTiledLayer", //加载切片地图组件 "esri/layers/ArcGISDynamicMapServiceLayer",//加载动态地图组件 "esri/symbols/SimpleFillSymbol", "esri/renderers/UniqueValueRenderer", "esri/tasks/query", "esri/tasks/QueryTask", "esri/Color", "dojo/domReady!" ], function (Map, dom, on, InfoTemplate, Graphic, Point, SimpleMarkerSymbol,Extent, FeatureLayer, WebTiledLayer, ArcGISDynamicMapServiceLayer, SimpleFillSymbol, UniqueValueRenderer, Query, QueryTask, Color, GeoJsonLayer) { //初始化地图容器 // map = new Map("map", { logo: false, slider: false }, {zoom: 8}); map = new Map("map", { center: [109.33789 , 29.57985], basemap: "satellite", zoom: 10, sliderStyle: "small", logo: false }); // 创建底图 var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"); map.addLayer(basemap,0); // 创建动态图层 var dynamicLayer = new ArcGISDynamicMapServiceLayer("http://116.62.63.94:6080/arcgis/rest/services/sanhuxiangtest/MapServer"); map.addLayer(dynamicLayer,99); }) </script> </head> <body class="tundra"> <div id="map" style="width:900px; height:580px; border:1px solid #000;"></div> 类别名称:<input class="nm" type="text"> </body> </html>
这段代码是一个简单的HTML页面,用于通过属性查询地图服务中的信息。以下是代码的主要部分:
1. 引入必要的CSS和JavaScript库:代码中使用了ArcGIS API for JavaScript的版本3.41,并引入了其他必要的库文件。
2. 初始化地图:使用`new Map("map", options)`创建一个地图容器,其中`options`包含了地图的一些设置,例如中心点、底图、缩放级别等。
3. 创建底图和动态图层:使用`new ArcGISTiledMapServiceLayer(url)`创建一个底图,以及使用`new ArcGISDynamicMapServiceLayer(url)`创建一个动态图层。这些图层可以通过URL指定,以加载地图数据。
4. 将图层添加到地图上:使用`map.addLayer(layer, index)`方法将底图和动态图层添加到地图上。`index`参数可选,用于指定图层的显示顺序。
在页面中还有一个输入框,用于输入类别名称。您可以在页面加载完成后,通过属性查询来过滤地图服务中的信息。
请注意,该代码使用的是ArcGIS API for JavaScript版本3.x,而不是最新版本的4.x。如果您要使用最新版本的API,请相应地修改代码。另外,确保替换URL和其他参数以适应您自己的地图服务和需求。
阅读全文