美文网首页
属性操作

属性操作

作者: 大庆无疆 | 来源:发表于2019-02-18 16:30 被阅读0次

非表单元素的属性

1、利用DOM中的元素访问属性,一般DOM对象属性的名称和html中的属性名称相同,但是有些个别的不一样,比如class属性
DOM对象的对应的标签的class属性的名字叫做className ,因为class 在js中是关键字。

2、取消a标签的默认行为
return false; //在事件函数中增加这行代码,可以取消a的默认行为

3、innerHTML和innerText属性获取标签内的内容

<body>
    <div id="box">
        <span>我是span</span>
        <a href="http://www.baidu.com" target="_blank">百度一下</a>
        <img src="../images/animal2.png">
    </div>


    <script type="text/javascript">
        1、我们有时会有个需求,就是获取标签内的内容,这里我们获取div标签的内容

        //获取元素
        var box = document.getElementById('box');

        使用innerHTML属性来获取
        var content = box.innerHTML;
        console.log(content);//他会把div里面的内容原封不动的打印出来,包括标签,空格和换行,如下
        /*
        <span>我是span</span>
        <a href="http://www.baidu.com" target="_blank">百度一下</a>
        <img src="../images/animal2.png">
    */

        使用innerText属性来获取
        content = box.innerText;
        console.log(content);//这个只会获取文本内容,会把标签过滤掉,并且换行和空格都会去掉,如下
        /*我是span 百度一下*/

//------------------------------------------------------------------------------------------------

        2、有时我们需要清空div标签内的内容,再重新设置
        (1)清空内容
        box.innerHTML = '';
        // box.innerText = '';//这两个方式都可以
        console.log(box.innerText);

        (2)设置内容,通过innerText和innerHTML设置有不同的结果
        //通过innerHTML设置,如果有标签他以html的方式解析标签
        box.innerHTML = '<a href="http://www.baidu.com" target="_blank" title="点击我跳转">百度一下</a>';
        // 页面上显示的结果为:百度一下。

        //通过innerText设置,不会解析标签,将设置的内容原封不动的设置进去
        box.innerText = '<a href="http://www.baidu.com" target="_blank" title="点击我跳转">百度一下</a>'
        //页面上显示的结果为:<a href="http://www.baidu.com" target="_blank" title="点击我跳转">百度一下</a>

//-------------------------------------------------------------------------
还有一个 textContent属性,和innerText属性相类似
 他们的区别在哪里呢?浏览器兼容问题,有的支持textContent,有的支持innerText,有的两个都支持
所以这里我们处理他们的兼容问题,不过以后一般不需要处理,因为别人已经帮我们处理好了
我们怎么知道浏览器支不支持哪个属性呢?
我们可以使用typeof来查看返回的类型,当属性不存在时,返回的类型是undefined,存在的话会返回string(是字符串形式哦).

        //现在我们写一个函数,可以接受一个元素,然后获取元素的内容文本并输出
        function getContent(element) {
            if((typeof element.innerText) === 'string') {   //判断传入的元素是否支持innerText属性
                console.log(element.innerText);     //支持的话打印内容
            }else { //不支持的话就使用element.textContent
                console.log(element.textContent);
            }
        }
    </script>
</body>

表单元素的属性

注意点:下面这三个属性有一个共同点,就是他们只有一个属性值
disabled
checked
selected
当html的标签的属性只有一个值的时候,DOM对应的元素属性值是一个布尔类型。

<form action="http://www.baidu.com" method="post">
    <input type="text" name="" placeholder="我是文本框的提示" id="textbox">
</form>

<script type="text/javascript">
    // 获取文本框元素
    var textbox = document.getElementById('textbox');
    console.log(textbox.disabled);  //打印false,表示还没有设置该属性
</script>

自定义属性的操作

访问:元素.getAttribute(属性名);
设置属性:元素.setAttribute(属性名, 属性值);
移除属性:元素.removeAttribute(属性名);
判断是否含有某属性:元素.hasAttribute(属性名);

<body>
    我们可以个标签添加自定义属性 
    <div id="box" class="d" age="23" ></div>

    <script type="text/javascript">
        //获取元素
        var box = document.getElementById('box');

        1、访问自定义属性,不能使用console.log(box.age);//输出undefined,访问自定义属性有其他的方式
        console.log(box.getAttribute('age'));//输出23,正常访问

        2、设置自定义属性,通过setAttribute(属性名, 属性值);
        //如果该属性没有存在,则会添加属性
        box.setAttribute('age', '92');  //更改了age属性的值
        box.setAttribute('personId', '1');  //增加了personId属性

        3、移除元素
        box.removeAttribute('age');
        console.log(box);   //输出:<div id="box" class="d" personid="1"></div>

    </script>
</body>

相关文章

网友评论

      本文标题:属性操作

      本文链接:https://www.haomeiwen.com/subject/faoaeqtx.html