JavaScript学习笔记——DOM基础 2.6

一、CSS-DOM

1、清楚一个概念

HTML负责的是结构,CSS负责的是样式,JavaScript负责的是动作(行为)。

2、style属性

语法:element.style

返回:object

style相对于element是一个属性,而style本身是一个对象,它包含了诸多元素的样式。

关于这一点,可以根据后面的例子去理解。

3、获取样式

例子:element.style.fontFamily

返回:style对应属性的值,如fontFamily,返回“Microsoft yahei”

注意:style.后面的"驼峰式"命名规则

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>筱雨生 - 博客园</title>
<script>
window.onload = function(){
    var myPara = document.getElementById(‘myPara‘);
    var myFontSize = myPara.style.fontSize;
    var myFontColor = myPara.style.color;
    alert(myFontSize);
    alert(myFontColor);
}
</script>
</head>
<body>
<h1>筱雨生</h1>
<p id="myPara" style="font-size:1em; color:rgba(162,47,49,1.00);">時光飛逝,莫讓網絡蹉跎了歲月</p>
<div id="myBlog">
  <ul>
    <li title="JavaScript">JavaScript</li>
    <li title="HTML">HTML</li>
    <li title="CSS">CSS</li>
    <li title="我的随笔">我的随笔</li>
    <li></li>
  </ul>
</div>
</body>
</html>

注意:通过style属性获取样式有很大的局限性,因为style属性只能返回内嵌样式,“内嵌”意味着style属性只有在插入HTML标签时,才可以获取到相应的值,也就是说,如果css写在外部,你将获取不到style的属性值。

4、设置样式

我们可以通过DOM的属性来获取元素节点的位置,从而设置它的样式。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>筱雨生 - 博客园</title>
<script>
window.onload = function(){
    var myPara = document.getElementById(‘myPara‘);
    var myFontSize = myPara.style.fontSize;
    var myFontColor = myPara.style.color;
    myPara.onmouseover = function(){
        myPara.style.fontSize = ‘2em‘;
        myPara.style.color = ‘rgba(250,0,0,1)‘;
    }
    myPara.onmouseout = function(){
        myPara.style.fontSize = ‘1em‘;
        myPara.style.color = ‘rgba(162,47,49,1.00)‘;
    }
}
</script>
</head>
<body>
<h1>筱雨生</h1>
<p id="myPara" style="font-size:1em; color:rgba(162,47,49,1.00);">時光飛逝,莫讓網絡蹉跎了歲月</p>
<div id="myBlog">
  <ul>
    <li title="JavaScript">JavaScript</li>
    <li title="HTML">HTML</li>
    <li title="CSS">CSS</li>
    <li title="我的随笔">我的随笔</li>
    <li></li>
  </ul>
</div>
</body>
</html>

5、previouseSibling与nextSibling

elementNode.previousSibling返回的是与之紧邻的上一个同级的节点,如果不存在这个节点,则返回null。

elementNode.nextSibling返回的是与之紧邻的下一个同级的节点,如果不存在这个节点,则返回null。

由于在很多浏览器中,会把空格和换行当作文本节点,所以直接应用previousSibling和nextSibling属性的时候就会比较苦逼。

二、响应事件

CSS提供的:hover等伪class属性允许我们根据HTML元素的状态来改变样式,DOM也可以通过onmouseover等事件对HTML元素的状态变化进行响应。

由于CSS提供的伪类不是所有浏览器都可以看到效果,所以有些时候我们不得以用DOM的方法去实现一些想要的效果。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>筱雨生 - 博客园</title>
<style>
*{margin:0; padding:0;}
body{
    font-family:Cambria, "Hoefler Text", "Liberation Serif", Times, "Times New Roman", serif,"Microsoft Yahei";
    background:#fff;
    padding:50px;
    color:#333;
}
h1{
    font-family:"Microsoft Yahei";
    font-weight:normal;
    margin-bottom:.2em;
}
p{font-size:.6em;color:#999;}
table{border-collapse:collapse;}
caption{
    font-size:.9em;
    padding:1em;
}
td{
    width:400px;
    text-align:center;
    height:5em;
    border:1px solid #999;
}
</style>
<script>
function addOnLoadEvent(func){
    var oldonload = window.onload; // 把现有的window.onload事件处理函数的值存储到变量oldonload
    if(typeof window.onload != ‘function‘){  // 如果这个处理函数上还没有绑定任何函数
        window.onload = func; // 将这个函数绑定到window.onload事件
    }else{
        window.onload = function(){ // 如果这个处理函数已经绑定了函数,就把这个函数追加到指令的末尾
            oldonload();
            func();
        }
}
}
function stripeTables(){
    if(!document.getElementsByTagName) return false;
    var tables = document.getElementsByTagName(‘table‘);
    var odd,rows;
    for(var i=0; i<tables.length; i++){
        odd = false;
        rows = tables[i].getElementsByTagName(‘tr‘);
        for(var j=0; j<rows.length; j++){
            if(odd == true){
            rows[j].style.backgroundColor = ‘#ffc‘;
            odd = false;
        }else{
            odd = true;
        }
        }
    }
}
addOnLoadEvent(stripeTables);

function highLightTr(){
    if(!document.getElementsByTagName) return false;
    var highLightTr = document.getElementsByTagName("tr");
    for(var i=0; i<hightR.length; i++){
        highLightTr[i].onmouseover = function(){
            this.style.fontWeight = ‘bold‘;
        }
        highLightTr[i].onmouseout = function(){
            this.style.fontWeight = ‘normal‘;
        }
    }
}
addOnLoadEvent(hightLightTr);
</script>
</head>
<body>
<h1>筱雨生</h1>
<p>時光飛逝,莫讓網絡蹉跎了歲月</p>
<div id="myBlog">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<caption>我的博客分类</caption>
  <tbody>
    <tr>
      <td>Windows</td>
      <td>iOS </td>
      <td>Android</td>
    </tr>
    <tr>
      <td>JavaScript</td>
      <td>HTML </td>
      <td>CSS</td>
    </tr>
    <tr>
      <td>ActionScript</td>
      <td>Animate</td>
      <td>Others</td>
    </tr>
  </tbody>
</table>
</div>
</body>
</html>

上面这个实例中,stripeTables函数用来实现HTML中表格的偶数行的背景色,当然这个函数还可以衍化成其他;highLightTr函数是用来高亮显示一行的数据。

三、className属性

语法:element.className

返回:一个value值,如果myElement.className = ‘title‘;

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>筱雨生 - 博客园</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script>
window.onload = function(){
    if(!document.getElementsByTagName) return false;
    var myTitle = document.getElementsByTagName(‘h1‘);
    var myElement = myTitle[0];
    myElement.className = ‘title‘;
}
</script>
</head>
<body>
<h1>筱雨生</h1>
<p>時光飛逝,莫讓網絡蹉跎了歲月</p>
<div id="myBlog">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<caption>我的博客分类</caption>
  <tbody>
    <tr>
      <td>Windows</td>
      <td>iOS </td>
      <td>Android</td>
    </tr>
    <tr>
      <td>JavaScript</td>
      <td>HTML </td>
      <td>CSS</td>
    </tr>
    <tr>
      <td>ActionScript</td>
      <td>Animate</td>
      <td>Others</td>
    </tr>
  </tbody>
</table>
</div>
</body>
</html>

@charset "utf-8";
/* CSS Document */

*{margin:0; padding:0;}
body{
    font-family:Cambria, "Hoefler Text", "Liberation Serif", Times, "Times New Roman", serif,"Microsoft Yahei";
    background:#fff;
    padding:50px;
    color:#333;
}
h1{
    font-family:"Microsoft Yahei";
    font-weight:normal;
    margin-bottom:.2em;
}
p{font-size:.6em;color:#999;}
table{border-collapse:collapse;}
caption{
    font-size:.9em;
    padding:1em;
}
td{
    width:400px;
    text-align:center;
    height:5em;
    border:1px solid #999;
}
.title{
    font-family:"Microsoft Yahei";
    font-weight:normal;
    margin-bottom:.2em;
    color:#AA0002;
}

上面这个实例中,通过className属性给h1元素节点设定了新的CSS,新的CSS并非来自元素节点的属性,而是来自于外部CSS。

四、题外话

嗨,哈利波特,你的魔法秘籍看到第几章了,能借给我瞅瞅不?

时间: 2024-08-13 03:26:02

JavaScript学习笔记——DOM基础 2.6的相关文章

JavaScript学习笔记——DOM基础 2.1

一.DOM 1.DOM的基本概念 DOM是Document Object Model的缩写,意思是文本对象模型,也就是说,如果没有Document,DOM也就无从谈起.我们可以把创建的网页当作是一个Document对象. JavaScript的对象可以分为三种类型:由用户自定义的对象,由JavaScript本身提供的内建对象,以及由浏览器提供的宿主对象. 顺便提一下BOM(Browser Object Model)和WOM(Window Object Model),其实这两个说的是一种东西,但大

JavaScript学习笔记——DOM基础 2.5

一.document.write方法 document对象write()方法,常用来向网页中输出字符串,圆括号中可以是要输出的字符串, document.write('这是我的个人博客'); 也可以是字符串变量, var myText = '这是我的个人博客'; document.write(myText); 还有一种,就是通过字符串和变量组合的方式进行输出. var myText = '这是我的'; document.write(myText + '个人博客'); document.write

JavaScript学习--Item29 DOM基础详解

看完JavaScript高级程序设计,整理了一下里面的DOM这一块的知识点,比较多,比较碎!DOM在整个页面的地位如图: DOM(文档对象模型)是针对HTML 和XML 文档的一个API(应用程序编程接口).DOM描,绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 1.节点层次 DOM 可以将任何HTML 或XML 文档描绘成一个由多层节点构成的结构.节点分为几种不同的类型,每种类型分别表示文档中不同的信息及(或)标记.每个节点都拥有各自的特点.数据和方法,另外也与其他节点

JavaScript学习笔记——对象基础

javascript对象基础 一.名词解释: 1.基于对象 一切皆对象,以对象的概念来编程. 2.面向对象编程(oop Object oriented programming) A.对象 就是人们要研究的任何事物,不仅能表示具体事物,还能表示抽象的规则,计划或事件. 属性的无序集合,每个属性可以存一个值(原始值,对象,函数) B.对象的属性和行为 属性:用数据值来描述他的状态 行为:用来改变对象行为的方法 C.类 具有相同或相似的性质的对象的抽象就是类.对象的抽象,就是类,类的具体化(实例化)

JavaScript学习笔记——语言基础(1)

1.JavaScript虽然名字里包含Java,但它和Java的交集微乎其微. 2.JavaScript没有输入/输出的概念.它是一个在宿主环境下运行的脚步语言.帮助宿主环境与外界交流.最普遍的宿主就是浏览器,但在Adobe Acrobat,photoshaop,Yahoo的widget中也有JavaScript的解释器. 3.JavaScript的类型图谱如下: 4.JavaScript中的字符串是一些字符序列.它们是Unicode字符序列,每个字符都是由16位数字表示. 5.JavaScri

JavaScript学习笔记——语法基础1.1

一.写在前面的话 1.我们有听说过,在一些地方,会把JavaScript当作入门级编程语言,这是因为它相对易学,易习. 2.JavaScript是一门地地道道的编程语言,既然是一门语言,那就应该有专属于它本身的语法,掌握它的语法势在必行. 3.不要试图去记忆它的所有语法和关键字,事实上,几乎没有人能做到这一点. 4.没有一个人敢说,学JavaScript1年或者几年就能称为不败的神话,坚持下去,会让你走的更远,只有这样,你才可能欣赏到更美的风景. 5.制定一个适合你自己的计划,选择一本适合你的书

JavaScript学习笔记&mdash;&mdash;语言基础(2)

1.当你查询一个不存在的数组索引,结果会是undefined. 2.遍历一个数组可以像下面这样写: for(var i = 0;i < a.length; i++){ //Do something with a[i] }      但这样效率比较低,因为每次循环都会计算一次数组长度.可以修改成: for(var i = 0, len = a.length; i < len; i ++){ //Do something with a[i] }     还有一种更好的写法是: for(var i

JavaScript学习笔记——1.基础知识

1.在html中使用js <script>do something</script> <script src="test.js"></script> <a href="javascript:do something">Link</a> <button onclick="do something">Button</button> PS:一个html文件中

JavaScript学习笔记——语法基础1.2

一.数组 1.通常情况下,一个变量只能有一个值,若想拥有多个值,就需要使用数组,换句话来说,数组是一个特殊的容器,它可以根据需求存放一个或者多个值.2.数组可以用关键字Array来声明,声明的同时,可以设定它的长度length. var myArray = Array(3); document.write(myArray.length); //输出3 3.我们可以在声明数组的同时对它进行填充,也可以在声明之后进行填充,当然,我们需要对新填充的值指定存放位置,需要注意下标是从0开始计数的. Jav