js_更新DOM

innerHTML不但可以修改DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树

// 获取<p id="p-id">...</p>
var p = document.getElementById(‘p-id‘);
// 设置文本为abc:
p.innerHTML = ‘ABC‘; // <p id="p-id">ABC</p>
// 设置HTML:
p.innerHTML = ‘ABC <span style="color:red">RED</span> XYZ‘;
// <p>...</p>的内部结构已修改

(如果,写入的字符串是通过网络拿到,要注意对字符编码来避免XSS攻击)

innerText和textContent可以自动对字符串进行HTML编码,保证无法设置任何HTML标签

两者区别,innerText不返回隐藏元素的文本,而textContent返回所有文本。IE<9不支持textContent

// 获取<p id="p-id">...</p>
var p = document.getElementById(‘p-id‘);
// 设置文本:
p.innerText = ‘<script>alert("Hi")</script>‘;
// HTML被自动编码,无法设置一个<script>节点:
// <p id="p-id">&lt;script&gt;alert("Hi")&lt;/script&gt;</p>

修改css也可以通过DOM的style来完成。如font-size命名不符合js有效的属性名,所以需要在js中写驼峰式命名fontSize

// 获取<p id="p-id">...</p>
var p = document.getElementById(‘p-id‘);
// 设置CSS:
p.style.color = ‘#ff0000‘;
p.style.fontSize = ‘20px‘;
p.style.paddingTop = ‘2em‘;

练习

<!-- HTML结构 -->
<div id="test-div">
  <p id="test-js">javascript</p>
  <p>Java</p>
</div>
‘use strict‘
/ 获取<p>javascript</p>节点:
var js = document.getElementById(‘test-js‘);

// 修改文本为JavaScript:
// TODO:
js.innerHTML=‘JavaScript‘;
// 修改CSS为: color: #ff0000, font-weight: bold
// TODO:
js.style.color=‘#ff0000‘;
js.style.fontWeight=‘bold‘;
时间: 2024-10-06 03:54:33

js_更新DOM的相关文章

【性能优化】懒、懒加载、懒动画 --- 基于window滚动事件来实时更新DOM的视图状态,以表明是否在规定的可视区,并作有change回调

/* * * 扩展jq原型: 懒.懒加载.懒动画 * --- 基于window滚动事件来实时更新DOM的视图状态,以表明是否在规定的可视区,并作有change回调 * * $jq.viewChange( {top:100,bottom:100,change:function(status){}} ) --- status: 'in'/'out' * $jq.viewChange('off') * * $jq[n].viewChange.status = 'in'/'out' ----- 状态为'

Swiper和Vue配合使用的问题——Vue的异步更新DOM

Swiper是很常用的库,用于实现触摸滑动效果,为了让Swiper生效,需要执行类似下面的代码(摘自Swiper官方示例) var mySwiper = new Swiper('.swiper-container', { autoplay: true,//可选选项,自动滑动 }) 而该代码的执行时机必须在DOM渲染完成之后,因此Swiper的官方文档要求在window.onload或$(document).ready()(使用JQuery或Zepto时)调用. 但显然,这只适用于静态页面. 如果

从Vue.js源码看异步更新DOM策略及nextTick

写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/answershuto/learnVue.在学习过程中,为Vue加上了中文的注释https://github.com/answershuto/learnVue/tree/master/vue-src,希望可以对其他想学习Vue源码的小伙伴有所帮助.可能会有理解存在偏差的地方,欢迎提issue指出,共同学

js_操作DOM

document.getElementById() document.getElementsTagName() css的document.getElemensBytClassName() // 返回ID为'test'的节点: var test = document.getElementById('test'); // 先定位ID为'test-table'的节点,再返回其内部所有tr节点: var trs = document.getElementById('test-table').getEle

Vue.js 2.0更新之增加Virtual DOM讲解

Virtual DOM是什么?在之前,React和Ember早就开始用虚拟DOM技术来提高页面更新的速度了. 若想了解它是如何工作的,就要先认清这几个概念:1.更新DOM是非常昂贵的操作当我们使用Javascript来修改我们的页面,浏览器已经做了一些工作,以找到DOM节点进行更改,例如: document.getElementById('myId').appendChild(myNewNode); 在现代的应用中,会有成千上万数量个DOM节点.所以因更新的时候产生的计算非常昂贵.琐碎且频繁的更

初识vue 2.0(12):使用$nextTick获取更新后的DOM

Vue 异步执行 DOM 更新. 只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变. 如果同一个 watcher 被多次触发,只会被推入到队列中一次.这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要. 然后,在下一个的事件循环"tick"中,Vue 刷新队列并执行实际 (已去重的) 工作. Vue 在内部尝试对异步队列使用原生的 Promise.then 和 MessageChannel,如果执行环境不支持,会采用 setTim

如何实现一个 Virtual DOM 及源码分析

Virtual DOM算法 web页面有一个对应的DOM树,在传统开发页面时,每次页面需要被更新时,都需要手动操作DOM来进行更新,但是我们知道DOM操作对性能来说是非常不友好的,会影响页面的重排,从而影响页面的性能.因此在React和VUE2.0+引入了虚拟DOM的概念,他们的原理是:把真实的DOM树转换成javascript对象树,也就是虚拟DOM,每次数据需要被更新的时候,它会生成一个新的虚拟DOM,并且和上次生成的虚拟DOM进行对比,对发生变化的数据做批量更新.---(因为操作JS对象会

为什么说DOM操作很慢

原文转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为,比如布局(layout)和绘制(paint).下面主要先介绍下这些浏览器行为,阐述一个页面是怎么最终被呈现出来的,另外还会从代码的角度,来说明一些不好的实践以及一些优化方案

(十三)通过DOM事件DOMNodeRemoved,看ng-repeat的性能问题以及track by的作用

1.DOMNodeRemoved事件 DOMNodeRemoved事件这里不做过多介绍,有个大概的认识,会使用即可.如下代码给content对象注册了DOMNodeRemoved事件处理函数,当content下有子元素被删除的时候,就会触发DOMNodeRemoved事件. <script> window.onload = function(){ var dom = document.getElementById("content"); dom.addEventListen