dom属性是什么呢

dom属性是什么呢,第1张

DOM全拼为DocumentObjectModel(文档对象模型)

是一种用于HTML和XML文档的编程接口,它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。

1、Zepto是为现代智能手机浏览器推出的Javascript框架,有和jQuery相似的语法,和jQuery相比下来,他有很多优点,大小方面,压缩后的zeptominjs大小只有21K,使用服务器端gzip压缩后大小只有5~10K,可以说非常的小,功能很齐全,多出来了一些触摸屏的事件,它对PC的浏览器就不是那么理想,尤其是万恶IE直接过滤不兼容,用它来开发手机iPhone和Android网页是不错的选择\x0d\\x0d\2、jquery主要是用在PC的网页中了,jquery是目前最流行的javascript框架,以其兼容全部主流浏览器,插件丰富,代码简洁,最关键的是更新快,最好的dom选择器而被广泛被使用。而手机wap方面的话,jquery也推出jquery-mobile,也很好用。\x0d\\x0d\简单的理解就是:\x0d\Zepto手机专用\x0d\jQuery电脑专用(但他又开发出了jquery-mobile,专门用于手机)

js *** 作节点的DOM方法

一、创建节点

createElement

createTextNode

二、添加、删除、替换、克隆元素

1、appendChild

2、insertBefore

3、如果appendChild、insertBefore追加的是已经存在的子元素,实际上就会将子元素位置移动

4、删除节点remove removeChild

remove()

removeChild

5替换节点

replaceChild

6、克隆节点

cloneNode()

三、 *** 作元素属性的方法

1获取属性 元素属性名

2设置属性 元素属性名 = 属性值

1、2方法只能获取和设置元素自带的属性

3 *** 作属性的万能方法

getAttribute()

setAttribute()

1、针对移动端程序

zepto有一些基本的触摸事件可以用来做触摸屏交互(tap事件、swipe事件),zepto是不支持IE浏览器的。

2、DOM *** 作的区别

添加id时jquery不会生效而zepto会生效。

3、事件触发的区别

使用jquery时load事件的处理函数不会执行;使用zepto时load事件的处理函数会执行。

4、事件委托的区别

zepto中,选择器上所有的委托事件都依次放入到一个队列中,而在jquery中则委托成独立的多个事件。

5、js精简方面

zepto是jquery的精简,针对移动端去除了大量jquery的兼容代码。

6、其他方面

zepto中没有为原型定义extend方法而jquery有;zepto的each方法只能遍历数组,不能遍历JSON对象。

据统计 目前全世界 %的网站使用它 也就是说 个网站里面 有 个使用jQuery 如果只考察使用工具库的网站 这个比例就会上升到惊人的 %

虽然jQuery如此受欢迎 但是它臃肿的体积也让人头痛不已 jQuery 的原始大小为 KB 优化后为 KB 如果是支持IE 的jQuery 原始大小为 KB 优化后为 KB

这样的体积 即使是宽带环境 完全加载也需要 秒或更长 更不要说移动设备了 这意味着 如果你使用了jQuery 用户至少延迟 秒 才能看到网 页效果 考虑到本质上 jQuery只是一个 *** 作DOM的工具 我们不仅要问 如果只是为了几个网页特效 是否有必要动用这么大的库?

年 jQuery诞生的时候 主要用于消除不同浏览器的差异(主要是IE ) 为开发者提供一个简洁的统一接口 相比当时 如今的情况已经发生了很大的变化 IE的市场份额不断下降 以ECMAScript为基础的JavaScript标准语法 正得到越来越广泛的支持 开发者直接使用JavScript标准语法 就能同时在各大浏览器运行 不再需要通过jQuery获取兼容性

下面就探讨如何用JavaScript标准语法 取代jQuery的一些主要功能 做到jQuery free

一 选取DOM元素

jQuery的核心是通过各种选择器 选中DOM元素 可以用querySelectorAll方法模拟这个功能

var $ = document querySelectorAll bind(document);

这里需要注意的是 querySelectorAll方法返回的是NodeList对象 它很像数组(有数字索引和length属性) 但不是数组 不能使用pop push等数组特有方法 如果有需要 可以考虑将Nodelist对象转为数组

myList = Array prototype slice call(myNodeList);

二 DOM *** 作

DOM本身就具有很丰富的 *** 作方法 可以取代jQuery提供的 *** 作方法

尾部追加DOM元素

// jQuery写法 $(parent) append($(child));

// DOM写法 parent appendChild(child)

头部插入DOM元素

// jQuery写法 $(parent) prepend($(child));

// DOM写法 parent insertBefore(child parent childNodes[ ])

删除DOM元素

// jQuery写法 $(child) remove()

// DOM写法 child parentNode removeChild(child)

三 事件的监听

jQuery的on方法 完全可以用addEventListener模拟

Element prototype on = Element prototype addEventListener;

为了使用方便 可以在NodeList对象上也部署这个方法

NodeList prototype on = function (event fn) { [][ forEach ] call(this function (el) { el on(event fn); }); return this; };

四 事件的触发

jQuery的trigger方法则需要单独部署 相对复杂一些

Element prototype trigger = function (type data) { var event = document createEvent( HTMLEvents ); event initEvent(type true true); event data = data || {}; event eventName = type; event target = this; this dispatchEvent(event); return this; };

在NodeList对象上也部署这个方法

NodeList prototype trigger = function (event) { [][ forEach ] call(this function (el) { el[ trigger ](event); }); return this; };

五 document ready

目前的最佳实践 是将JavaScript脚本文件都放在页面底部加载 这样的话 其实document ready方法(jQuery简写为$(function))已经不必要了 因为等到运行的时候 DOM对象已经生成了

六 attr方法

jQuery使用attr方法 读写网页元素的属性

$("#picture") attr("src" "//url/to/image");

DOM元素允许直接读取属性值 写法要简洁许多

$("#picture") src = "//url/to/image";

需要注意 input元素的this value返回的是输入框中的值 链接元素的this href返回的是绝对URL 如果需要用到这两个网页 元素的属性准确值 可以用this getAttribute( value )和this getAttibute( href )

七 addClass方法

jQuery的addClass方法 用于为DOM元素添加一个class

$( body ) addClass( hasJS );

DOM元素本身有一个可读写的className属性 可以用来 *** 作class

document body className = hasJS ;

// or

document body className += hasJS ;

HTML 还提供一个classList对象 功能更强大(IE 不支持)

document body classList add( hasJS );

document body classList remove( hasJS );

document body classList toggle( hasJS );

document body classList contains( hasJS );

八 CSS

jQuery的css方法 用来设置网页元素的样式

$(node) css( "color" "red" );

DOM元素有一个style属性 可以直接 *** 作

element style color = "red";;

// or

element style cssText += color:red ;

九 数据储存

jQuery对象可以储存数据

$("body") data("foo" );

HTML 有一个dataset对象 也有类似的功能(IE 不支持) 不过只能保存字符串

element dataset user = JSON stringify(user);

element dataset score = score;

十 Ajax

jQuery的Ajax方法 用于异步 *** 作

$ ajax({ type: "POST" url: "some php" data: { name: "John" location: "Boston" } }) done(function( msg ) { alert( "Data Saved: " + msg ); });

我们可以定义一个request函数 模拟Ajax方法

function request(type url opts callback) {

var xhr = new XML>

在react中,我们已经知道,组件并不是真实的DOM节点,而是通过虚拟DOM渲染出来的节点,只有当它被插入到文档后,才成为了真实的DOM。

要从组件中获取真实的DOM节点,则可在jsx标签中加入ref属性

<script type="text/babel">

var Hello=ReactcreateClass({

showThis:function(){

//通过thisrefsusername拿取到了ref为username的元素节点

consolelog(thisrefsusernamevalue)

},

render:function(){

return (

<div>

<input type="text" ref="username" onChange={thisshowThis}/>

</div>

)

}

});

ReactDOMrender(

<Hello />,

documentgetElementById("box")

)

</script>

以上就是关于dom属性是什么呢全部的内容,包括:dom属性是什么呢、zepto和jquery的区别、js *** 作节点的DOM方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/10219884.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存