当有更好的方法时,使用 setAttribute 方法有什么意义
What is the point to use the setAttribute method when there is better way
在这里,我有两个函数setImage1
和setImage2
来添加一个值 src
属性和dieImg
对象的alt
属性。
我发现第二个解决方案比第一个解决方案更容易setImage2
更短。
所以我的问题是,在您使用的第一个解决方案时使用第一个解决方案是否有任何意义setAttribute metod这两个函数的结果是相同的。
第二个问题 什么时候必须使用 setAttribute 方法?
function setImage1(dieImg) {
var dieValue = Math.floor(1 + Math.random() * 6);
dieImg.setAttribute("src", "img/die" + dieValue + ".png");
dieImg.setAttribute("alt", "die image with " + dieValue + " spot(s)");
} // end function setImage1
function setImage2(dieImg) {
var dieValue = Math.floor(1 + Math.random() * 6);
dieImg.src = "img/die" + dieValue + ".png"
dieImg.alt = "die image with " + dieValue + " spot(s)");
} // end function setImage2
当您想要设置不能是节点属性的属性时,它很有用(因为已经有一个具有该名称的属性)。
例如:
var element = document.createElement('img');
element.setAttribute('parentNode', 'a');
这使得
<img parentnode="a">
而
var element = document.createElement('img');
element['parentNode'] = 'a';
只是让
<img>
(您可以使用outerHTML
查看它)
今天,有了data-*
属性,它就不那么重要了。
大多数情况下,您可以使用 object.attribute = value 。你应该使用 setAttribute 的时刻是你将属性的名称作为变量的时候。
属性和属性之间存在细微差别。DOM 节点有一个 attributes
对象,其中保存属性。它们还具有直接属于节点的属性。 attributes
通常与 HTML 源代码相关联,而属性可能会在运行时更改。
假设您的代码中有一个输入元素:
<input value="1" />
然后更改其值属性:
var input = document.getElementsByTagName('input')[0];
input.value = 2;
console.log( input.value == input.getAttribute('value') );
// false
它可能因实现而异,但现在此输入的 value
属性为 2,但属性仍为 1。但它将显示并提交为 2。http://jsfiddle.net/EhJUt/
有些属性不能直接操作,比如@dystroy响应中的parentNode
,而你可以对属性做任何你想做的事情。
相关文章:
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- node.js是否具有'match()'方法如果是,语法是什么
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 什么是“;右“;使用addClass/delay/removeClass的方法
- 函数调用方法有什么用
- 列出没有 mysql 的元素的最佳方法是什么