js中提到的dom引用是什么意思

js中提到的dom引用是什么意思,第1张

这两行代码要区分的是DOM对象和jQuery对象的区别。

DOM对象和jQuery对象是两种不同的对象,它们的实例也因此具有不同的属性和方法。通常要 *** 作页面中的节点,我们都需要想办法获取对该节点的引用。比如如下代码:

var dom = documentgetElementById('节点id');

这是通过节点的id来获取一个页面节点,也就是对节点的引用。这个时候,我们对变量dom的任何 *** 作,实际上就是对页面节点的 *** 作,比如说修改样式、移除节点、获取属性等等。如下:

domstyledisplay = 'none'; // 隐藏节点

domparentNoderemoveChild(dom); // 删除节点

var height = domoffsetHeight; // 获取节点高度

像上面的style、parentNode、removeChild、offsetHeight等等,都是DOM对象的属性或方法。

因为DOM对象不属于javascript的一部分,它是各个浏览器对javascript的扩展,但各个浏览器又都在实现上有一些不一致,导致javascript代码需要处理很多兼容性问题。为了解决这些兼容性问题,提高开发效率,jQuery库就诞生了。

jQuery解决了兼容性问题,再加上它的实现极其巧妙,因此得到了很多人的吹捧。以前有一点javascript基础的人,要写出稍微复杂些的特效,几乎都不可能,但因为jQuery的出现,类似显示隐藏、各种动画效果,都只需要简单的几行代码即可。有些人甚至觉得,jQuery甚至都能替代javascript,而且在各个前端学习的站点、博客中,也是将jQuery和javascript并列作为一类。

但问题是,不了解基础的javascript,在遇到问题、异常的时候,你就只能干瞪眼了。任何语言,框架和库都无法取代最基础的语法,而且框架和库也都是由最简单的语法丰富起来的。

jQuery实际上可以说是一个大的类——javascript实现的类。以一个简单的模型来说,如下:

;(function(window, undefined){

window$ = windowjQuery = jQuery;

// 定义jQuery类

function jQuery(selector, content){

content = content || document;

var eles = contentquerySelectorAll(selector);

var len = eleslength;

// 给jQuery对象添加长度属性

thislength = len;

// 方便获取dom对象,获取实例:jQuery('#id')[0];

for(var i = 0; i < len; i++){

this[i] = eles[i];

}

}

// 扩展原型

jQueryprototype = {

// 构造函数

constructor : jQuery,

// 根据索引获取dom对象

get : function(index){

return this[index];

}

}

})(window);

这是一段jQuery的模拟代码,你可以使用如下方式调用:

var jqObj = new jQuery('class');

因为jQuery的特殊处理,写jQuery代码的时候不需要new即可用,但这里没有处理,所以需要加上new关键字。

上面返回的jqObj,就是我定义的jQuery的一个对象,它是jQuery对象,已经不是DOM对象了。我可以写如下代码:

var dom = jqObjget(1); // 获取jQuery对象中下标为1的DOM对象

然后变量dom就和之前的变量dom一样,可以使用DOM对象的属性和方法了。

但是,我们不能写下面的代码,否则它就会报异常:

jqObjstylecolor = 'red';

因为jQuery对象的实例,根本就没有style这个属性。jQuery也是一样的,jQuery对象和DOM对象是两种不同的对象,它们的内部结构(比如上面的get方法是自定义的)也是不同的。当你把jQuery对象当做DOM对象使用时,你调用该对象的任何属性和方法,都有可能触发一个属性或方法未定义的异常,因为这个属性或方法确实不存在。

所以,如果你使用了jQuery库,那你就得在 *** 作节点的时候,注意区分这个节点对象到底是DOM对象,还是jQuery对象。基本上jQuery的方法如果返回节点对象,返回值大多是jQuery对象,但也有例外,比如get等。

回到你的题目,通过jQuery获取的canvas对象,实际上是jQuery对象封装后的对象。它没有getContext方法,所以会报错。但jQuery对象可以像访问数组一样,通过中括号来获取对应的DOM对象,所以第二种返回了最原始的Canvas对象,它是具有getContext方法的。

代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Test</title>

<script src=">

function setup(){

if(!documentgetElementByTagName) return

divs=documentgetElementByTagName("div")

for(i=0;i<divslenght; i++){

div[i]

}

}

1 documentcreateElement(tagname)

2 documentcreateTextNode(data)

3documentcreateDocumentFragment()

1 NodeparentNode

2 NodeparentElement

3 NodechildNodes

4 Nodechildren

5 NodenextSibling

6NodenextElementSibling

7 NodepreviousSibling

8NodepreviousElementSibling

9NodefirstChild

10 NodefirstElementChild

11 NodelastChild

12 NodelastElementChild

1 NodeappendChild()

2 NoderemoveChild()

3 NodeinsertBefore()

4 NodereplaceChild()

1 elementsetAttribute(name /属性名/, value /属性值/)

2 elementremoveAttribute(attrName /要删除的属性名/)

3 elementgetAttribute(attrName)

4 elementhasAttribute(attrName)

各常量名称与数值对照表如下:ELEMENT_NODE 1ATTRIBUTE_NODE 2TEXT_NODE 3CDATA_SECTION_NODE 4ENTITY_REFERENCE_NODE 5ENTITY_NODE 6PROCESSING_INSTRCTION_NODE 7COMMENT_NODE 8DOCUMENT_NODE 9DOCUMENT_TYPE_NODE 10DOCUMENT_FRAGMENT_NODE 11NOTATION_NODE 12IE6不支持,不过你可以自定义一个JS对象Node。3处理特性处理特性可以使用标准的NameNodeMap中的方法:getNamedItem(name) removeNamedItem(name) setNamedItem(node) item(pos)比如:<p id="test">测试</p>假设变量oP是上面的p节点的引用,我们要访问oP的id属性:var sId=oPattributesgetNamedItem("id")nodeValue;这些方法用起来很累赘,所以DOM又定义了三个方法来简化:getAttribute(name) ——返回名称为name的属性的值setAttribute(name,value) ——顾名思义removeAttribute(name) ——顾名思义 上面的例子可以改写为:var sId=oPgetAttribute("name");4访问指定节点:熟知的getElementByTagName(name),getElementByName(name),getElementById(id)三个方法,不再展开。5创建和 *** 作节点:(1)创建新节点,一张IE(60)和FF对DOM Level1的创建新节点方法支持的对照表:方法IE FFcreateAttribute(name) Y YcreateCDATASection(text) N YcreateComment(text) Y YcreateDocumentFragment() Y YcreateElement(tagName) Y YcreateEntityReference(name) N YcreateProcessingInstruction(target,data) N YcreateTextNode(text) Y Y下面介绍常用的几个方法(2)createElement(),createTextNode(),appendChild()例子:<html> <head> <title>createElement() Example</title> <script type="text/javascript"> function createMessage() { var oP = documentcreateElement("p"); var oText = documentcreateTextNode("Hello World!"); oPappendChild(oText); documentbodyappendChild(oP); } </script> </head> <body > </body></html>在页面载入后,创建节点oP,并创建一个文本节点oText,oText通过appendChild方法附加在oP节点上,为了实际显示出来,将oP节点通过appendChild方法附加在body节点上。此例子将显示Hello World!(3)removeChild(),replaceChild()和insertBefore()从方法名称就知道是干什么的:删除节点,替换节点,插入节点。需要注意的是replaceChild和insertBefore两个参数都是新节点在前,旧节点在后。(4)createDocumentFragment()此方法主要是为了解决大量添加节点时,速度过慢。通过创建一个文档碎片节点,将要添加的新节点附加在此碎片节点上,然后再将文档碎片节点append到body上面,替代多次append到body节点。

首先 nextSibling 并不是所有浏览器执行后 结果都是一样的!

这是我写的:

<html>

<head>

<meta >

W3C DOM和JavaScript很容易混淆不清。DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。JavaScript则是用于访问和处理DOM的语言。如果没有DOM,JavaScript根本没有Web页面和构成页面元素的概念。文档中的每个元素都是DOM的一部分,这就使得JavaScript可以访问元素的属性和方法。

DOM独立于具体的编程语言,通常通过JavaScript访问DOM,不过并不严格要求这样。可以使用任何脚本语言来访问DOM,这要归功于其一致的API。表3-1列出了DOM元素的一些有用的属性,表3-2列出了一些有用的方法。

以上就是关于js中提到的dom引用是什么意思全部的内容,包括:js中提到的dom引用是什么意思、关于js中利用DOM动态改变CSS样式,请大神提供代码、新手问题:JS如何遍历一个DIV中所有的DOM等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9602229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存