html 标准属性不要用 setAttribute 方法
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
测试浏览器:

参考文档:
html 标准属性不要用 setAttribute 方法的更多相关文章
- Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...
- Javascript进阶篇——(DOM—getAttribute()、setAttribute()方法)—笔记整理
getAttribute()方法通过元素节点的属性名称获取属性的值.语法: elementNode.getAttribute(name) 1. elementNode:使用getElementById ...
- Java中Integer类的方法和request的setAttribute方法的使用与理解
一.Integer类的使用方法 Interger:整数类型 1.属性. static int MAX_VALUE:返回最大的整型数: static int MIN_VALUE:返回最小的整型数: st ...
- 设置属性节点(setAttribute())
setAttribute():方法将为给定元素节点添加一个新的属性值或是改变它的现有属性值: element.setAttribute(attriibuteName,attributeValue); ...
- jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解
jQuery操纵DOM元素属性 attr()和removeAtrr()方法使用详解 jQuery中操纵元素属性的方法: attr(): 读或者写匹配元素的属性值. removeAttr(): 从匹配的 ...
- 转载:java 中对类中的属性使用set/get方法的意义和用法
经常看到有朋友提到类似:对类中的属性使用set/get方法的作用?理论的回答当然是封闭性之类的,但是这样对我们有什么作用呢?为什么要这样设计?我直接使用属性名来访问不是更直接,代码更简洁明了吗?下面我 ...
- combobox 属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
- C#中combobox 控件属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
- HTML 标准属性 和 事件属性
HTML的公共属性 HTML 和 XHTML 标签支持的标准属性 核心属性 (Core Attributes) 以下标签不提供下面的属性:base.head.html.meta.param.scrip ...
随机推荐
- appium的inspectot使用
前提已安装好appium环境 1. 打开appium-doctor 2. 启动appium-service,点击 inspector 3. 配置手机参数,参数获取参考上篇博客 4. 点击start ...
- SyntaxError: inconsistent dedent
错误原因: 一般是拷贝别人的代码过来编辑,由于编辑器不同,出现 tab和 space 的差别. 解决方法: Window->Preferences->PyDev->Editor-&g ...
- erlang的catch和 try catch的初步猜测
一. catch(Fun):似乎可以避免因为 函数Fun内的错误而造成的当前的进程的崩溃.
- 3D游戏与计算机图形学中的数学方法-点线面
<易传·系辞上传>:”易有太极,是生两仪,两仪生四象,四象生八卦.” 借用一下古代先人们的智慧引一下本文的主题-三维图形中的点线面,在三维几何中也有一句话可以和上面的话相对应:由点成线,由 ...
- 微信支付(公众号支付APIJS、app支付)服务端统一下单接口java版
一.微信公众号支付APIJS: 要完整的实现微信支付功能,需要前后端一起实现,还需要微信商户平台的配置.这里只是涉及服务端的代码. jar包:pom.xml <!-- ↓↓↓↓↓↓↓↓ 支付相关 ...
- Case用法
SELECT <myColumnSpec> = CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <so ...
- 最大子数组之和(N)
int maxSum(int *array, int n) { ]; ; ; ; i < n; i++) { ) newsum += array[i]; else newsum = array[ ...
- Ubuntu 安装 Kubernetes
Kubernetes是Google开源的容器集群管理系统.它构建于docker技术之上,为容器化的应用提供资源调度.部署运行.服务发现.扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-Pa ...
- 怎么用MathType编辑带圈字母
在用word公式编辑器MathType编辑公式时,里面涉及到很多的数学物理符号等等,这些符号或者是公式其实都可以利用MathType中的模板进行组合.在这些数学公式中,有时会有一些比较特殊的符号,它们 ...
- 手机web不同屏幕字体大小高度自适应
body{font-size:0.6rem:} <script> //使用rem策略,不断更新html的fontsize (function(){ function sizeHtm ...