zoukankan      html  css  js  c++  java
  • DOM

    1 document属性:title URL bgColor fgColor

    使用document 的title(标题) 属性
    alert(document.title);
    document.title="改变后的标题";

    使用document 的URL(必须大写) 属性
    alert(document.URL);

    使用document 的bgColor 属性
    document.bgColor="red";

    使用document 的fgColor 属性
    document.fgColor="blue";

    方法:getElementById()通过ID获取元素
    示例:
    var button = document.getElementById("button");
    alert(button.value);

    2 getElementsByTagName()通过标签名获取元素(返回指定标签名的对象集合)

    属性:length 可通过下标方式访问

    示例:
    var button = document.getElementById("button");
    alert(button.value);

    var input = document.getElementsByTagName("input");
    alert(input.length);通过length
    alert(input[3].value);通过下标方式访问

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

    属性:length 可通过下标方式访问
    问题:有兼容性问题 ,如果name存在于form表单中,可以正常使用,如果出现在div元素中,则不能正常返回值(IE 不能使用 FF CHROM 可以使用)

    示例:
    var input = document.getElementsByName("input");
    alert(input[0].value);
    alert(input.length);

    4 getElementsByClassName()返回指定的类名的对象集合

    属性:length 可通过下标方式访问
    问题:有兼容性问题 ,在 IE 不能使用 ,在 FF CHROM 可以使用

    解决兼容性问题:

    unction getClassName(ClassName){

    if(document.getElementsByClassName){
    return document.getElementsByClassName(ClassName)
    }else{
    var all = document.getElementsByTagName("*");
    var arr=[];
    for(var i=0;i<all.length;i++){
    if(all[i].className == ClassName){
    arr.push(all[i]);
    }
    }
    return arr;
    }

    }
    alert(getClassName("class1")[0].value);


    <input class="class1" name="input" type="text" value="123"/>
    <input class="class1" name="input" type="text"/>
    <input class="class1" name="input" type="text"/>
    <input id="button" type="button" value="刷新"/>

    5 write() document.write("")输出数据在网页上

    document对象集合:

    1 all:所有对象集合 使用该属性用于判断/解决兼容性问题

    示例:
    if(document.all){
    alert("IE") ;
    }else{
    alert("OTHER")
    }
    针对IE 则输出 "IE" 针对FF或者CHROME 则输出 "OTHER";注:document.all只针对IE;

    2 form :所有form表单集合
    访问:通过下标/通过name

    示例:

    alert(document.forms[0][2].value);
    alert(document.forms[0].name1[0].value);

    <form action="">
    <input name="name1" type="text" value="1"/>
    <input name="name1" type="text" value="2"/>
    <input type="text" value="3"/>
    <input type="text" value="4"/>
    </form>

    操作元素内容:

    innerHTML:设置或获取 *标签 中的内容 比如"<h1>测试</h1>"

    示例:var a = document.getElementById("a");
    alert(a.innerHTML);

    <div id="a"><h1>测试</h1></div>获取的是"<h1>测试</h1>"
    有兼容问题:
    innerText:获取文字内容(针对IE)

    textContent:获取文字内容(FF CHROM)

    解决兼容性问题:

    var a = document.getElementById("a");
    function b(a){
    if(document.all){
    alert(a.innerText);
    }else{
    alert(a.textContent);
    }
    }
    b(a);

    <div id="a">
    <h1>测试</h1>
    </div>

    属性操作: 对象.属性=值
    var a = document.getElementsByTagName("a")[0];
    a.href="一个新的地址";
    a.className="无设置CLASS标签时,可以取CLASS名";
    a.getAttribute("href","newhref");

    getAttribute("属性") 获取属性 setAttribute("属性","值") 设置属性

    样式操作:
    1 行内样式:*对象.style.属性

    var div = document.getElementsByTagName("div")[0];
    div.style.backgroundColor="red";值必须为字符串

    小技巧:div.className = "另一个设置了样式的类名";原class设置的样式全部变成新的样式

    2 CSS层叠样式 : 通过ID更改样式(批量更改尽量用CLASS值更改)
    通过CLASS更改样式(批量更改)
    更改或获取某个属性的值:document.styleSheets[index].rules[index].style.属性(IE chrom)
    所有style标签中第[index]个标签 标签中第[index]个对象
    document.styleSheets[index].cssrules[index].style.属性(firefox)

    # 动态添加 删除样式 #
    <!--动态添加样式(只针对W3C FF chrom)-->
    document.styleSheets[0].insertRule(".div1{height:150px;background-color:red;150px;}",2);

    动态删除样式(只针对W3C)
    document.styleSheets[0].deleteRule(0);

    动态添加样式(IE chrom)
    document.styleSheets[0].addRule(".div1","height:300px;300px;",2);

    动态删除样式(IE chrom)
    document.styleSheets[0].removeRule(2);

    # 获取最终样式(只能获取,不能赋值) #
    针对W3C
    alert(document.getComputedStyle(div1,null).width);
    alert(document.getComputedStyle(div1,null)["width"]);

    针对IE:对象.currenStyle.属性
    alert(div1.currentStyle.width);

    #
    节点操作 #

    1 获取该父元素的节点(无兼容问题)

    alert(span.parentNode.nodeName);

    2 获取对象所有子节点(换行也算节点,这个要注意,可以用,但是有兼容问题)

    alert(father.childNodes.length);//返回 9 有兼容问题

    解决兼容问题:

    function a(obj){
    var arr = [];
    for(var i = 0;i<obj.childNodes.length;i++){
    if(!(obj.childNodes[i].nodeType == 3 && obj.childNodes[i].nodeValue.trim()=="")){
    arr.push(obj.childNodes[i]);
    }
    }
    return arr;
    }
    alert(a(father).length);


    3 获取第一个子节点 有兼容问题 返回换行
    alert(father.firstChild.nodeName);

    解决兼容问题:

    function a(obj){
    var b = obj.firstChild;
    while(b.nodeType == 3 && b.nodeValue.trim() == ""){
    b= b.nextSibling;
    }
    return b;
    }
    alert(a(father).nodeName);

    4 获取最后一个子节点 有兼容问题 返回换行

    alert(father.lastChild.nodeName);

    解决兼容问题:

    function a(obj){
    var b = obj.lastChild;
    while(b.nodeType == 3 && b.nodeValue.trim() == ""){
    b= b.previousSibling;
    }
    return b;
    }
    alert(a(father).nodeName);


    5 获取下一个兄弟节点 有兼容问题 返回换行
    alert(father.nextSibling.nodeName);

    解决兼容问题:

    function a(obj){
    var b = obj.nextSibling;
    while(b.nodeType == 3 && b.nodeValue.trim() == ""){
    b= b.nextSibling;
    }
    return b;
    }
    alert(a(div).nodeName);


    6 获取上一个兄弟节点 有兼容问题 返回换行
    alert(father.previousSibling.nodeName);

    解决兼容问题:

    function a(obj){
    var b = obj.previousSibling;
    while(b.nodeType == 3 && b.nodeValue.trim() == ""){
    b= b.nextSibling;
    }
    return b;
    }
    alert(a(span).nodeName);

  • 相关阅读:
    流程控制语句-while循环
    流程控制语句-for循环
    流程控制语句-switch选择语句
    多重判断if..else嵌套语句
    深入 Laravel 内核之IOC容器
    深入 Laravel 内核之工厂模式
    Swoole 中使用 WebSocket 异步服务器、WebSocket 协程服务器
    Swoole 中使用 HTTP 异步服务器、HTTP 协程服务器
    Swoole 中使用 TCP 异步服务器、TCP 协程服务器、TCP 同步客户端、TCP 协程客户端
    UI视图面试相关(上)
  • 原文地址:https://www.cnblogs.com/alicezq/p/4783835.html
Copyright © 2011-2022 走看看