element.setAttribute()的目的是什么?

时间:2012-08-15 22:13:01

标签: javascript

如果有这样的元素:

var c = document.createElement('a');

然后,只需执行以下操作即可添加属性名称:

c.name = "a1";

如果可以使用点符号,setAttribute()的目的是什么?

4 个答案:

答案 0 :(得分:2)

属性与属性不同。

属性通常在HTML中创建,并将成为element.attributes的对象成员。有些人还会设置相应的属性。

更改属性时会更新某些属性,但有些属性不会更新。例如,.value属性不会更改输入元素的属性。或者自定义属性不会成为自定义属性。

大多数情况下,您可能想要设置属性,但如果要更改属性,则在某些情况下必须使用setAttribute

答案 1 :(得分:1)

这是为了制作一些自定义属性:

虽然可以做el.name='aaa';

如果你el.customsttr='a'它将无效。

- (除非已经定义,如下所述)

http://jsfiddle.net/sXdHB/

应用:

例如你有一个img,带有attr'src',那么你可能想要添加一个自定义属性'big_src',然后通过一些脚本读取它以显示更大的一个;

答案 2 :(得分:1)

我会使用getAttribute/setAttribute来明确您正在使用DOM元素。最大限度地减少歧义是一个优势!

然而,这是quirksmode.org关于atrributes的说法:

  

属性

     一个血腥的混乱。尝试按此顺序影响属性:

     
      
  1. 尝试获取或设置特定属性,例如x.id或y.onclick。
  2.   
  3. 如果没有特定属性,请使用getAttribute()或   的setAttribute()。
  4.   
  5. 如果即使不起作用,请尝试其他任何方法或   下表中的财产。大多数都有可怕的浏览器   但是,不兼容的模式。
  6.   
  7. 避免属性[]。情况更糟   比什么都重要。
  8.   

答案 3 :(得分:1)

谁说你可以做到?

好吧,你可以。但严肃地说,#34;谁说?",因为它主要归结为那个。

最初,有Netscape Navigator 2,第一个支持Javascript的网络浏览器,实际上是在Netscape Enterprise Server服务器端使用前几个月,第一个支持Javascript的东西(称为" Livescript"在测试版中,但很快就重新命名为#34; Javascript"因为它是1995年并且将#34; java"放在任何东西中都是一种可靠的方法来获得大约20,000英寸柱科技记者花了他们剩下的时间在咖啡批发商面前混淆,他们想知道新闻发布会和促销活动在哪里。

当时的对象模型非常小,以至于您可以在几天内将整个模型保持在脑中。对于大多数元素,你实际上并不能对它们做很多事情。很多事情都非常繁琐(你今天可以通过<select id="selId" name="selName">和其他一些方式找到document.getElementById('selId').value的当前价值,然后你需要document.forms[0]["selName"].options[document.forms[0]["selName"].selectedIndex].value

然后IE3也推出了Javascript,NN 3通过让你改变图像的src属性来提高赌注。浏览器之战已经开始认真。许多退伍军人仍然被他们所做的回忆所困扰。

使浏览器的文档模型更好的显而易见的方法是让属性反映出越来越多的东西 - 最好是可写的而不是只读的。下一个最好的事情是比其他浏览器更简单,更容易记住更改内容的方式(然后他们可能会生成更多的网页,这些网页在您的浏览器的最新版本中起作用并且没有在您的竞争对手中#&# 39; S)

通过保持快速发展,显然Netscape将开发一个新的中间件平台,这将使微软和苹果的立场无关紧要,而陪审团则是关于雅虎或者alta-vista是否有办法搜索和/或目录将主导网络。 (不要对技术进行长期预测)。

在make-script-able-to-everything-everything-everything的大趋势中,很多属性都是在相应的属性之后命名的,这毕竟是一种非常明智的方式。

但这有点不一致。首先,与属性对应的大多数属性以直接的方式将字符串值映射到字符串值。一两个不会,例如锚元素上的href属性,它为您提供了一个更丰富的对象,其中包含反映URI部分的属性(主要是因为它可以在make-script-able-to-to-before之前的早期使用)这样做,一切对一切)。哪个都有用(如果你想打破URI)和讨厌,因为没有好的方法可以告诉哪个是哪个。

在这个问题的高峰期,他们有一个名为DHTML的东西,以及一种叫做dHTML的东西,这两种方式可以用完全不相容的方式做同样的事情。

还有一个事实是javascript在允许你向任何东西添加新属性方面是松散的,而且HTML允许你添加新的属性(有争议的,取决于你遵守哪个标准的严格程度,但这是浏览器大战和新的专有属性似乎每4分钟由一个浏览器或另一个浏览器添加。知道某个属性是否会对任何给定的浏览器产生任何实际影响是令人讨厌的。

与此同时,在一个遥远的国际标准联盟中,正在开发一种称为XML的东西。它允许您以各种方式添加各种属性的各种元素。还添加了在脚本中处理此问题的方法。

我们需要一种更加一致地更改元素属性的方法,而不是现有的,因为很明显所有未来版本的HTML都是XML应用程序(不要对技术进行长期预测)因为两者之间至少相对一致是有道理的。

每个人都明白,拥有比其他人更受欢迎的浏览器并不会让任何人进入下一个比尔盖茨(甚至不是现在的比尔盖茨)所以获得更多标准支持的优势接近而不是更华丽的东西 - 其他人 - 能够做得更明显。

W3C DOM变得越来越有条理,越来越受到支持。它为我们提供了更加一致的设置属性的方法。它更冗长,但您可以始终如一地知道它将要做什么,并且在创建,复制,更改和删除文档的某些部分方面也更加强大。

但是如果可能的话,旧网站必须继续运行,并且事实上它只是设置相应属性的许多属性仍然是有用的简写,因此人们不会停止使用它。尽管如此,所有浏览器都在某种程度上支持DOM方法,使它们之间更加一致。

然后有一半的开发人员开始使用JQuery。