JavaScript核心(持续更新二)

 JavaScript核心


 JavaScript核心

三、节点操作

3.1节点操作-增删改 

3.2节点属性

3.2.1原生属性

 3.2.2属性操作的标准方法

 3.3节点操作-层级关系

 3.4css样式操作

 3.5案例(节点属性) 

 3.6案例(样式操作)

 3.7案例(节点操作)


三、节点操作

页面元素节点的操作,都离不开DOM对象

3.1节点操作-增删改 

document.createElement() 用来生成网页元素节点,参数为元素的标签名;

document.createTextNode() 用来生成文本节点,参数为所要生成的文本节点的内容;

node.appendChild() 接受一个节点对象作为参数,将其作为最后一个子节点,插入当前节点;

node.hasChildNodes() 返回一个布尔值,表示当前节点是否有子节点

node.removeChild() 接受一个子节点作为参数,用于从当前节点移除该子节点

node.cloneNode() 用于克隆一个选中的节点。 它接受一个布尔值作为参数,表示是否同时克隆子节点,默认是false,即不克隆子节点。 注意: 不会克隆绑定到该元素上的事件;

node.innerHTML 返回该元素包含的 HTML 代码。该属性可读写,常用来设置某个节点的内容;(不属于W3C DOM规范)

node.innerText 

返回该元素包含的内容。该属性可读写

 

<body>
    <div id="d">
        <span>111</span>
    </div>
</body>
<script>
    //创建元素节点
    var p = document.createElement('p');
    //创建文本节点
    var t = document.createTextNode('女娲');
    //添加节点
    p.appendChild(t);
    var d = document.querySelector('#d')
    d.appendChild(p);

    //判断是否有子节点
    if(d.hasChildNodes('span')){
        var s = document.querySelector('span');
        //删除子节点
        d.removeChild(s);
    }

    // 克隆一个节点
    var c = d.cloneNode(true);
    d.appendChild(c);

	//操作选中元素的HTML代码,有值则是设置,无值则是获取
    alert(d.innerHTML);
    
    console.log(document.getElementById('d').innerText);
    console.log(document.getElementById('d').innerHTML);
</script>

案例:

点击按钮创建img节点,添加到body中

<body>
    <input type="button" value="我要图" id="btn">
</body>
<script>
    var btn = document.getElementById('btn');
    btn.onclick = function(){
        // var img = document.createElement('img');
        // img.src = '/img/c2.jpg';
        // document.getElementsByTagName('body')[0].appendChild(img);
        
        // 直接
        document.getElementsByTagName('body')[0].innerHTML += "<img src='/img/c3.jpg'>";
    }
</script>

动态创建文本框

<body>
    <input type="button" value="++" id="btn">
    <div id="bo"></div>
</body>
<script>
    var btn = document.getElementById('btn');
    btn.onclick = function () {
        // document.getElementById('bo').innerHTML += '<input type="text">';
        
        var inp = document.createElement('input');
        document.getElementById('bo').appendChild(inp);
    }
</script>

3.2节点属性

3.2.1原生属性

HTML元素节点的标准属性(即在标准中定义的属性),会自动成为元素节点对象的属性

<body>
    <div id="d" a="b" class="a b c d e"></div>
</body>
<script>

    var d = document.querySelector('#d');
    //获取原有属性值
    console.log(d.id);
    //修改原有属性值
    d.id = 'ff';
    console.log(d.a); // undefined
    //特殊:获取class类名,需使用className属性
  	console.log(d.className);
    d.className += ' hello';
</script>

 3.2.2属性操作的标准方法

node.getAttribute() 返回当前元素节点的指定属性。如果指定属性不存在,则返回null;

node.setAttribute() 为当前元素节点新增属性。如果同名属性已存在

<body>
    <div id="d"></div>
</body>
<script>
    var d = document.querySelector('#d');
    //设置属性,有则修改,无则添加,可设置非标准属性
    d.setAttribute('id','ffdd');
    d.setAttribute('aa','kk');
    //获取属性值,可获取非标准属性
    console.log(d.getAttribute('aa'));
</script>
node.hasAttribute() 返回一个布尔值,表示当前元素节点是否包含指定属性
node.removeAttribute() 从当前元素节点移除属性
//如果有id属性
if(d.hasAttribute('id')){
    //删除id属性
    d.removeAttribute('id');
}

 3.3节点操作-层级关系

node.nextElementSibling 返回紧跟在当前节点后面的第一个同级Element节点,如果当前节点后面没有同级节点,则返回null;

node.previousElementSibling 返回紧跟在当前节点前面的第一个同级Element节点,如果当前节点前面没有同级节点,则返回null;

node.parentElement 返回当前节点的父级Element节点;

node.childNodes 返回一个NodeList集合,成员包括当前节点的所有子节点(注意空格回车也算)。

node.firstChild 

返回树中节点的第一个子节点,如果节点是无子节点,则返回 null。

node.lastChild 

返回该节点的最后一个子节点,如果该节点没有子节点则返回null。

<body>
    <div id="d1">
        <p id="p1">11111</p>
        <p id="p2">222</p>
        <p id="p3">33333</p>
        <p id="p4">4444</p>
    </div>
    <div id="d2">
        <p id="p5">55555</p>
        <p id="p6">66666</p>
    </div>
</body>
<script>
    var p2 = document.querySelector('#p2');
    //下一个兄弟节点
    p2.nextElementSibling.style.background = 'red';
    //上一个兄弟节点
    p2.previousElementSibling.style.background = 'red';
    //父级节点
    p2.parentElement.style.background = 'red';

    var d1 = document.querySelector('#d1');
	//所有子节点列表
    d1.childNodes[3].style.background = 'red';
</script>

 3.4css样式操作

每个DOM对象都有style属性,我们可以直接操作,用来读写 行内CSS样式。 之前,我们已经简单的使用过JS控制元素的CSS样式; 在具体使用的时候还有一些需要重点注意的细节:

名字需要改写,将横杠从CSS属性名中去除,然后将横杠后的第一个字母大写:

  • background-color写成backgroundColor

属性值都是字符串,设置时必须包括单位:

  • div.style.width的值不能写为100,而要写为100px
<body>
    <div id="d1" style="width
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: JavaScript 前端工程化是一种使用工具和流程来提高前端开发效率和质量的方法。它可以帮助我们管理项目构建、模块化、测试、部署等流程,使前端开发更加高效和可维护。 一些常用的前端工程化工具包括: - 包管理器:如 npm 或 yarn,用于管理项目依赖的第三方库和工具。 - 构建工具:如 Webpack 或 Rollup,用于将源代码转换为浏览器可以运行的代码,并且可以做一些优化,如代码压缩、模块化、自动添加浏览器前缀等。 - 自动化测试工具:如 Jest、Mocha 或 Karma,用于自动执行单元测试和集成测试,保证代码的质量和稳定性。 - 部署工具:如 Git、Jenkins 等,用于将项目发布到线上环境。 前端工程化还可以通过使用规范和框架来提高代码质量和团队协作效率。例如,使用 lint 工具来检查代码规范,使用框架如 React、Vue 或 Angular 来组织代码结构。 总之,JavaScript 前端工程化是一种使用工具和流程来提高前端开发效率和质 ### 回答2: JavaScript 前端工程化是一种通过工具和实践来提高前端开发效率和质量的方法。它涉及到对代码、资源和工作流程的管理和优化,旨在满足在复杂的前端项目中面临的挑战。 首先,JavaScript 前端工程化通过模块化来组织和管理代码。使用模块化的方式可以将代码分割成独立的模块,各模块之间可以互相依赖和复用。这样可以提供更好的代码可维护性和复用性,同时也可以避免全局命名冲突和代码碎片化的问题。常用的模块化技术包括 ES6 的模块化语法和模块打包工具,如Webpack。 其次,JavaScript 前端工程化通过自动化构建工具来提高开发效率。通过使用构建工具,我们可以自动完成编译、压缩、合并等繁琐的操作,减少手动操作的时间和错误。常见的构建工具有Grunt、Gulp和Webpack,它们可以根据配置文件自动执行各种任务,并生成优化后的静态文件。 另外,JavaScript 前端工程化还涉及到代码规范和质量保证。通过使用代码规范工具如ESLint,并制定团队统一的代码规范,可以提高团队协作的效率,减少潜在的问题。同时,结合自动化测试工具如Jest、Mocha等,可以实现代码的自动化测试,确保代码质量和稳定性。 最后,JavaScript 前端工程化还可以提供更好的代码部署和发布机制。通过使用持续集成工具如Jenkins,可以自动部署代码到测试和生产环境,提高交付速度和稳定性。同时,还可以使用版本控制工具如Git,实现多人协作和代码版本管理。 总之,JavaScript 前端工程化通过模块化、自动化构建、代码规范和质量保证、代码部署等方式来提高前端开发效率和质量。在现代化的前端开发中,工程化已经成为不可或缺的组成部分,帮助开发者应对复杂的需求和挑战。 ### 回答3: JavaScript前端工程化是一种以提高开发效率、代码质量和项目可维护性为目标的开发方法。它借助工具和规范化的工作流程,帮助开发人员更好地组织、管理和部署JavaScript代码。 前端工程化的核心是模块化。通过使用模块化开发,前端代码可以按照功能进行划分,每个功能模块都拥有独立的代码和依赖关系,使得开发和维护变得更加容易。常用的模块化规范有CommonJS和ES6模块。 另一个关键概念是构建工具。构建工具可以帮助自动化完成一系列任务,如代码合并、压缩、转换、静态资源管理等。常用的构建工具有Webpack和Rollup。这些工具可以根据配置文件自动处理代码,减少手动操作,提高开发效率。 除此之外,前端工程化还包括自动化测试、性能优化和代码规范等方面。自动化测试可以帮助开发人员编写和运行测试用例,确保代码的正确性。性能优化可以通过压缩代码、懒加载和CDN加速等方式提高页面性能。代码规范则可以统一代码风格,提高代码的可读性和可维护性。 总的来说,JavaScript前端工程化是一种通过使用模块化、构建工具和自动化测试等方法,提高前端代码开发效率和质量的开发方法。它可以帮助开发人员更好地组织和管理代码,减少手动操作,提高开发效率和项目可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值