问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-05 03:39

我来回答

2个回答

热心网友 时间:2022-04-21 23:28

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


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

var dom = document.getElementById('节点id');

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

dom.style.display = 'none'; // 隐藏节点
dom.parentNode.removeChild(dom); // 删除节点
var height = dom.offsetHeight; // 获取节点高度

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


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


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


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


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

;(function(window, undefined){

window.$ = window.jQuery = jQuery;

// 定义jQuery类
function jQuery(selector, content){
content = content || document;
var eles = content.querySelectorAll(selector);
var len = eles.length;

// 给jQuery对象添加长度属性
this.length = len;

// 方便获取dom对象,获取实例:jQuery('#id')[0];
for(var i = 0; i < len; i++){
this[i] = eles[i];
}
}

// 扩展原型
jQuery.prototype = {
// 构造函数
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 = jqObj.get(1); // 获取jQuery对象中下标为1的DOM对象

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


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

jqObj.style.color = 'red';

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


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


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

热心网友 时间:2022-04-22 00:46

  DOM即(Document Object Model)文档对象模型,通过 JavaScript操作DOM,您可以重构整个 HTML 文档、添加、移除、改变或重排页面上的项目。
  例:document.getElementById("标签id").style.color = "FF0000";//可以把HTML中指定ID标签的文本部分变为红色,这就是一个javascript操纵DOM的一个例子
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么叫背板 下列关于遵义会议的表述,不正确的是彻底清算了王明的左倾路线吗_百度知 ... 抖店注销后抖音号能解绑吗?还能开吗? 请问腱鞘炎必须打封闭针吗? 突然两个手手腕内侧都得了腱鞘炎,动一下就疼,除了打封闭针,还有什麽办 ... 得了腱鞘炎一定要打封闭吗? 下雨了,来接孩子的家长们撑着雨伞,仿佛像什么 华为MatePadPro搭载哪一款处理器华为MatePadPro处理器介绍【详解】 支付宝APP商家怎么申请收款二维码 申请方法介绍 SVG动画从入门到实战,提升你的网站表现力 喝咖啡会掉头发吗?还是会长头发? 总有一天会长大的读后感 喝咖啡掉头发么? dom是什么属性 北京市房屋抵押登记程序 南充cc酒吧具体位置在哪啊? 成都兰桂坊CC酒吧具体地址 DOM方法和属性? 求助:北京朝阳区不动产抵押登记需要哪些手续和资料 开一个30万的酒吧能办多少钱的信用卡 为什么我的世界1.7.10服务器要ban工业2实验里的通用流体单元 江西赣州是不是要开个cc酒吧 颧骨有酒窝的女人面相 dom属性是什么意思啊? 北京房屋抵押贷款手续怎么办理? 嵊州市cc酒吧好玩吗 消费如何 两个女人去 天津开发区有酒吧/任何场所能看今晚的英超直播吗? 掉头发可以喝咖啡吗 天津人气最旺的酒吧有哪些? 在青白江cc酒吧丢东西怎么办 喝咖啡真的会掉头发吗?对皮肤有什么坏影响? 用微信绑定银行卡给朋友转账1000却被扣了50是什么情况? 内衣少女中cc在酒吧中的出场英文舞曲是什么? dom双属性什么意思 为什么零钱通的380元钱转到建设银行卡,钱少了50元? 但是看微信零钱通明细所有转帐正确没有错 我才14岁。送来不熬夜。但是很爱和咖啡。掉头发和喝咖啡有关系么。 js属性和dom属性,我有点混了:( 读什么书后有感作文500字以上 记忆力差,体质差 ,掉头发不能喝咖啡,治不好是什么病? 当你微信转时转给别人是要转的数,但银行卡里少了钱怎么办? 成都酒吧哪里好玩?分别有哪些酒吧 农村儒商银行卡微信转给别人一千块钱,怎么就少了65块钱是怎么回事? 我加了别人微信卡里50元钱不见了在这样的情况下我怎么办 微信钱包转账到银行卡怎么卡里的钱少了 我没被封,但是群聊和朋友圈被*使用了,请问怎么解除*?谢谢 别人扫码加我微信,我用微信发五十红包给他,而我银行卡里的钱却少了一百,为什? 我用微信给朋友转账一百,交易夫败了,然后我就取消交易,但是我的银行卡里还是少了100块钱,怎么办? 人保财险 常州分公司地址 自己在家怎么做辣白菜 常州中保人寿保险总部