当前位置: 移动技术网 > IT编程>网页制作>HTML > Dom Api之操作标签属性

Dom Api之操作标签属性

2020年07月14日  | 移动技术网IT编程  | 我要评论

标签元素的属性有两类:1.标签自带属性.2.自定义属性.

一、获取属性.

获取属性有两种方法:1.element.属性名.2.element.getAttribute(属性名).下面用代码看一下他们的区别:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>dom api</title>
</head>

<body>
    <header>dom api</header>
    <button>button</button>
    <div id='count' name='div'>0</div>
</body>

<script>
    //获取button标签
    let buttonEle = document.querySelector('button');
    //获取div标签
    let divEle = document.querySelector('#count');
    //为button的onclick绑定事件
    buttonEle.onclick = function() {
        console.log('divEle.id: ' + divEle.id);
        console.log('divEle.name: ' + divEle.name);

        console.log('getAttribute-id: ' + divEle.getAttribute('id'));
        console.log('getAttribute-name: ' + divEle.getAttribute('name'));
    }
</script>

</html>

可以看到,通过element.属性值来获取的只能是标签的自带系统属性,我们自定义的属性通过这种方式是获取不到的;而element.getAttribute(属性名)则可以获取以上两种属性.

二、设置属性.

设置属性也有两种方式,与获取类似:1.element.属性名.2.element.getAttribute(属性名).通过代码看一下他们的区别:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>dom api</title>
</head>

<body>
    <header>dom api</header>
    <button>button</button>
    <div id='count'>0</div>
</body>

<script>
    //获取button标签
    let buttonEle = document.querySelector('button');
    //获取div标签
    let divEle = document.querySelector('#count');
    //为button的onclick绑定事件
    buttonEle.onclick = function() {
        divEle.name = '233';
        divEle.id = 'countEle';
        console.log('divEle.name: ' + divEle.getAttribute('name'));
        console.log('divEle.id: ' + divEle.id);
        divEle.setAttribute('name', '233');
        divEle.setAttribute('id', 'countNewId');
        console.log('divEle.setAttribute-name: ' + divEle.getAttribute('name'));
        console.log('divEle.setAttribute-id: ' + divEle.id);
        divEle.removeAttribute('id');
        divEle.removeAttribute('name');
    }
</script>

</html>

当点击按钮后:

阔以看到,当我们通过element.属性名设置属性时,只对自带属性有效.而element.setAttribute可以设置任何类型的属性.removeAttribute会移除任何类型的属性.

三、dataset.

dataset是h5新增的属性,它提倡我们以data-属性名的格式命名自定义属性,这么做,1是方便区分自定义属性和自带属性.2是在js中可以使用dataset来获取和设置自定义属性.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>dom api</title>
</head>

<body>
    <header>dom api</header>
    <button>button</button>
    <div id='count'>0</div>
</body>

<script>
    //获取button标签
    let buttonEle = document.querySelector('button');
    //获取div标签
    let divEle = document.querySelector('#count');
    //为button的onclick绑定事件
    buttonEle.onclick = function() {
        divEle.dataset['name'] = 'countDiv';
        console.log(divEle);
    }
</script>

</html>

可以看到,当我们使用dataset来设置自定义属性时,它会自动在属性名前添加'data-'前缀.

同理,我们获取的时候,也只是通过data-后面的名字来操作的:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>dom api</title>
</head>

<body>
    <header>dom api</header>
    <button>button</button>
    <div id='count'>0</div>
</body>

<script>
    //获取button标签
    let buttonEle = document.querySelector('button');
    //获取div标签
    let divEle = document.querySelector('#count');
    //为button的onclick绑定事件
    buttonEle.onclick = function() {
        divEle.dataset['countName'] = 'countDiv';
        console.log(divEle);
        console.log("divEle.dataset['countName']: " + divEle.dataset['countName']);
        console.log("divEle.dataset.countName: " + divEle.dataset.countName);
    }
</script>

</html>

需要注意的是,当自定义属性的名字段数比较多时,如上面的data-count-name,我们需要通过驼峰命名发来获取和设置dataset中的属性值.

本文地址:https://blog.csdn.net/Wenliuyong/article/details/107320890

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网