html 中有些属性,譬如 checked , autofocus 只要存在就会有效,即使值是 false ,譬如:

<input autofocus=false id='test'>
<input type="checkbox" checked=false id="test2">

结果:

如果要取消这种行为,使用 setAttribute 设置假值是无效的,因为文档也说了,只要属性存在就有效:

test.setAttribute('autofocus', false)
test2.setAttribute('checked', false)

结果:

所以要取消,首选:

test.autofocus = false
test2.checked = false

如图:

或者直接移除属性:

test.removeAttribute('autofocus')
test2.removeAttribute('checked')

这种方式为什么会生效呢?因为

调用 removeAttribute() 这个方法不仅会清除特性的值,而且也会从元素中完全删除特性

实际上,如果要添加这些属性,很明显也有两种方式:

首选

test.autofocus = true
test2.checked = true

或者:

test.setAttribute('autofocus', true)
test2.setAttribute('checked', true)

结果:

如果你仔细观察,上面两种操作方案,浏览器的渲染结果是不一样的;

为什么推荐第一种呢?首先, autofocus 和 checked 属性都是标准规定的属性,所以可以通过元素属性直接访问,setAttribute 等方法更多的可以用来操作自定义属性,如 data- 开头的属性,如果对于标准规定的属性用 setAttribute 等方法,会出现些异常情况,譬如:

下面操作是无效的

test.setAttribute('autofocus', false)
test2.setAttribute('checked', false)

而且,会导致下面的结果跟看起来的有分歧

console.log(test.autofocus, test2.checked);//true,true

测试浏览器:

参考文档:

JavaScript高级程序设计-第3版-中

html 标准属性不要用 setAttribute 方法的更多相关文章

  1. Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。

    http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...

  2. Javascript进阶篇——(DOM—getAttribute()、setAttribute()方法)—笔记整理

    getAttribute()方法通过元素节点的属性名称获取属性的值.语法: elementNode.getAttribute(name) 1. elementNode:使用getElementById ...

  3. Java中Integer类的方法和request的setAttribute方法的使用与理解

    一.Integer类的使用方法 Interger:整数类型 1.属性. static int MAX_VALUE:返回最大的整型数: static int MIN_VALUE:返回最小的整型数: st ...

  4. 设置属性节点(setAttribute())

    setAttribute():方法将为给定元素节点添加一个新的属性值或是改变它的现有属性值: element.setAttribute(attriibuteName,attributeValue); ...

  5. jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解

    jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解 jQuery中操纵元素属性的方法: attr(): 读或者写匹配元素的属性值. removeAttr(): 从匹配的 ...

  6. 转载:java 中对类中的属性使用set/get方法的意义和用法

    经常看到有朋友提到类似:对类中的属性使用set/get方法的作用?理论的回答当然是封闭性之类的,但是这样对我们有什么作用呢?为什么要这样设计?我直接使用属性名来访问不是更直接,代码更简洁明了吗?下面我 ...

  7. combobox 属性、事件、方法

    一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...

  8. C#中combobox 控件属性、事件、方法

    一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...

  9. HTML 标准属性 和 事件属性

    HTML的公共属性 HTML 和 XHTML 标签支持的标准属性 核心属性 (Core Attributes) 以下标签不提供下面的属性:base.head.html.meta.param.scrip ...

随机推荐

  1. 转00600异常解决方案:ORA-00600: 内部错误代码, 参数: [19004], [], [], [], [], []

    <问题描述> ORACLE 10.1 OR 10.2中所有平台都存在该问题. <问题现象> 在进行多表关联复杂查询时出现 ORA-00600: 内部错误代码, 参数: [190 ...

  2. numpy得到数组的index

    itemindex = numpy.where(array==item)

  3. 【转】@JoinColumn 详解

    在address中没有特殊的注解. 在Person中对应到数据库里面就有一个指向Address的外键. 我们也可以增加注释指定外键的列的名字,如下:@OneToOne(cascade=CascadeT ...

  4. 【转】WCF入门教程一[什么是WCF]

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  5. linux -- ubuntu 安装apache后,修改默认路径

    默认由apt方式安装的Apache,指定网页主目录位于:/var/www 而系统/var所分到的空间太少,所以要换路径 1.修改默认网站目录 ubuntu8.10下修改apache2的默认文档目录 默 ...

  6. Java基础--生成验证码

    HTML <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  7. 4 kafka集群部署及kafka生产者java客户端编程 + kafka消费者java客户端编程

    本博文的主要内容有   kafka的单机模式部署 kafka的分布式模式部署 生产者java客户端编程 消费者java客户端编程 运行kafka ,需要依赖 zookeeper,你可以使用已有的 zo ...

  8. MathType给公式底部加箭头的教程

    箭头符号在数学中很常用的一个符号了,不管是在推导过程用以表示逻辑关系,还是表示向量,箭头符号都起着它就的作用.我们经常习惯给公式或者字母的上部加上箭头,那如何给公式的底部加上箭头呢?下面来介绍word ...

  9. HTML之DocType的几种类型

    一.什么是DOCTYPE DOCTYPE是Document Type(文档类型)的简写,在页面中,用来指定页面所使用的XHTML(或者HTML)的版本.要想制作符合标准的页面,一个必不可少的关键组成部 ...

  10. Android中文API

    Android中文API http://www.android-doc.com/index.html