zoukankan      html  css  js  c++  java
  • dom操作操作元素属性的若干方法

    // 1,通过HTMLElement类型的属性来获得和设置元素特性(设置的是元素属性,比如class,id,title,而不是css样式,比如float,border等)
    let div = document.getElementById("div");
    let link = document.getElementById("link");
    // 获取
    const id = div.id;
    const classname = div.className;
    const title = div.title;
    const href = link.href;
    // 设置
    div.id = "boxes";
    div.className = "test";
    div.title = "我是标题";
    link.href = "http://www.sina.com.cn";

    // 2,通过getAttribute()、setAttribute() 方法,获取、设置、移除元素的特性
    // 获取
    div.getAttribute("id");
    div.getAttribute("class");
    link.getAttribute("href");
    // 设置
    div.setAttribute("id","myDiv");
    div.setAttribute("title","我也是标题哦");
    link.setAttribute("href","link.html");
    // 注:不建议使用该特性设置元素的类名(浏览器不兼容),设置类名可以这样:document.getElementById("myDiv").className=("***");

    // 3,通过attributes属性,获取、设置、移除元素的特性
    // 获取
    id2 = div.attributes["id"].nodeValue;
    // 设置
    div.attributes["id"].nodeValue = "myDiv2";

    // 4,移除元素属性的方法
    div.removeAttribute("class");
    div.attributes.removeNamedItem("class");

    // 5,追加类名的方法(以上设置属性值的方法,均是将原值替换掉,因为类名可以同时存在多个值,故需要增加和删除)
    el.classList.add("classname");
    el.classList.remove("classname");
    注:classList兼容IE>=10,以下版本的兼容实现方法如下(该方法为网络上照抄的写法):
    if (!("classList" in document.documentElement)) {

    Object.defineProperty(HTMLElement.prototype, 'classList', {
    get: function() {
    const self = this;
    function update(fn) {
    return function(value) {
    let classes = self.className.split(/\s+/g);
    let index = classes.indexOf(value);
    fn(classes, index, value);
    self.className = classes.join(" ");
    }
    }

    return {
    add: update(function(classes, index, value) {
    if (!~index) classes.push(value);
    }),

    remove: update(function(classes, index) {
    if (~index) classes.splice(index, 1);
    }),

    toggle: update(function(classes, index, value) {
    if (~index)
    classes.splice(index, 1);
    else
    classes.push(value);
    }),

    contains: function(value) {
    return !!~self.className.split(/\s+/g).indexOf(value);
    },

    item: function(i) {
    return self.className.split(/\s+/g)[i] || null;
    }
    };
    }
    });
    }
    本人前端水平有限,写的知识点可能有谬误,欢迎留言指正,如果看到,我将第一时间回复。感谢支持!
  • 相关阅读:
    jQuery图片翻转弹出动画特效
    HTML5来了,7个混合式移动开发框架
    10款很好用的 jQuery 图片滚动插件
    JS图片自动和可控的轮播切换特效
    CSS3扇形动画菜单 鼠标滑过扇形展开动画
    css里面的几个你不知道的属性
    JS判断是否是微信打开页面
    js的escape()、encodeURI()、encodeURIComponent()区别详解
    使用HTML5的十大原因
    Hybrid App开发 四大主流移平台分析
  • 原文地址:https://www.cnblogs.com/qddyh/p/10392909.html
Copyright © 2011-2022 走看看