文档对象模型DOM(一)

简介: 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。 HTML DOM 模型被构造为对象的树。 HTML DOM 树 每加载一个标记 注释 或者属性,就将其当做节点(node)。

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被构造为对象的树。

HTML DOM 树

每加载一个标记 注释 或者属性,就将其当做节点(node)。

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应 

查找 HTML 元素

通常,通过 JavaScript,您需要操作 HTML 元素。

为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:

  • 通过 id 找到 HTML 元素
  • 通过标签名找到 HTML 元素
  • 通过类名找到 HTML 元素 

1)   getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。

<html>
<head>
<script type="text/javascript">
function getValue()
{
var x=document.getElementById("myHeader")
alert(x.innerHTML)
}
</script>
</head>
<body>

<h1 id="myHeader" onclick="getValue()">这是标题</h1>
<p>点击标题,会提示出它的值。</p>

</body>
</html>
View Code

2)   getElementsByTagName() 方法可返回带有指定标签名的对象的集合。

<html>
<head>
<script type="text/javascript">
function getElements()
  {
  var x=document.getElementsByTagName("input");
  alert(x.length);
  }
</script>
</head>
<body>

<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<br />
<input type="button" onclick="getElements()" value="How many input elements?" />

</body>
</html>
View Code

3) getElementsByName() 方法可返回带有指定名称的对象的集合。

注意一下(不兼容) 在ie它只得到标准元素中有name属性的
FF chorem 都可以得到
建议getElementsByName 推荐使用针对表单的时候
<html>
<head>
<script type="text/javascript">
function getElements()
  {
  var x=document.getElementsByName("myInput");
  alert(x.length);
  }
</script>
</head>
<body>

<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<br />
<input type="button" onclick="getElements()"
value="How many elements named 'myInput'?" />

</body>
</html>
View Code
getElementByTagName(*)能得到所有元素节点,IE支持,不推荐使用。

兼容函数(getElementsByClassName)
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        window.onload=function myGetElementsByClassName(className){
            var els=[];
            if(document.all){//只认识IE;
//                alert(IE);
                var elements=document.getElementsByTagName("*");
//                alert(elements.length);
                for(var i=0;i<elements.length;i++){
                    if(elements[i].className==className){
                        els.push(elements[i]);
                    }
                }

            }
            else{
                els=document.getElementsByClassName(className);
            }
             return els;
        };
    </script>
</head>

<body>
<input type="button" class="input1" id="in" value="第一个"/><br/>
<input type="button" class="input1" name="one" value="第二个"/><br/>
<input type="button" class="input" name="two" value="第三个"/><br/>
<input type="button" class="input" name="one" value="第四个"/><br/>
<script>

    var els=document.getElementsByClassName("input");
//    alert(els.length);
    for(var i=0;i<els.length;i++){
        els[i].style.backgroundColor="blue";
    }
</script>
</body>
</html>
View Code

创建和操作节点;

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div{
            border: 1px red solid;
        }
        #one{
            width:100px;
            height: 100px;
        }
        #two{
            width:50px;
            height: 50px;
        }
    </style>


    <script>
     window.onload=function(){
         var bnt=document.getElementsByTagName('button')[0];
         bnt.onclick=function(){
             /*var p=document.createElement('p');
             var text=document.createTextNode('你好');
             p.appendChild(text);
             document.body.appendChild(p);
             */
             //我们可以使用一个简便的方法就是使用innerHTML;
             var p=document.createElement('p');
             p.innerHTML='<span>你好</span>';//这样可以直接添加很多的节点
             document.body.appendChild(p);//添加节点  appendChild 默认是的从最后开始添加

             var div = document.getElementById("one");
             //删除节点
           //  document.body.removeChild(div);
             var div2 = document.getElementById("two");
               //  div.removeChild(div2);

             var div5 = document.createElement("div");
             div5.innerHTML="div555";
             //替换子节点
            // div.replaceChild(div5,div2);//replaceChild(newnode,oldnode)

             //插入
             div.insertBefore(div5,div2);//insertBefore(newnode,oldnode)
             // 复制节点(参数) true 会复制它的子节点
             // false 只复制这个节点本事,但是不复制它的子节点
            // var div6 = div2.cloneNode(false);
             //div.appendChild(div6);

         };


     };
    </script>
</head>
<body>
<button>点击</button>
<div id="one">
    div1
       <div id="two">
            div2
       </div>
       <div>
            div3
       </div>
       <div>
           div4
       </div>

</div>
</body>
</html>
View Code

 




相关文章
N..
|
1月前
|
JavaScript 前端开发 UED
DOM编程中的form对象
DOM编程中的form对象
N..
10 0
N..
|
1月前
|
XML JavaScript 数据格式
DOM编程中的Document对象
DOM编程中的Document对象
N..
15 0
|
1月前
|
JavaScript 前端开发 算法
MVVM模型,虚拟DOM和diff算法
1.MVVM是前端开发领域当中非常流行的开发思想。(一种架构模式)目前前端的大部分主流框架都实现了这个MVVM思想,例如Vue,React等2.虽然Vue没有完全遵循MVVM模型,但是Vue的设计也受到了它的启发。Vue框架基本上也是符合MVVM思想的 3.MVVM模型当中尝到了Model和View进行了分离,为什么要分离?
|
17天前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
4月前
|
XML JavaScript 前端开发
Javaweb之javascript的DOM对象的详细解析
1.5.3 DOM对象 1.5.3.1 DOM介绍 DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
44 0
|
5月前
|
JavaScript 前端开发 开发者
jQuery文档对象模型DOM的实际应用
jQuery文档对象模型DOM的实际应用
30 0
N..
|
1月前
|
JavaScript 前端开发 UED
DOM的window对象
DOM的window对象
N..
10 1
|
3月前
|
存储 移动开发 JavaScript
JavaScript:DOM对象
JavaScript:DOM对象
38 0
JavaScript:DOM对象
|
4月前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:什么是文档碎片(Document Fragment)?有什么作用?
JavaScript DOM 操作:什么是文档碎片(Document Fragment)?有什么作用?
72 0
|
4月前
|
编解码 JavaScript 前端开发
BOM和DOM:BOM(浏览器对象模型)提供了与浏览器交互的能力,如弹窗、定时器等;DOM(文档对象模型)提供了操作HTML元素的能力,如获取、修改元素内容和属性。
BOM和DOM:BOM(浏览器对象模型)提供了与浏览器交互的能力,如弹窗、定时器等;DOM(文档对象模型)提供了操作HTML元素的能力,如获取、修改元素内容和属性。
38 2