先看这两个词的英文定义(来自有道词典)。首先是属性:复制代码如下:property ['prpti] n .属性和性能;财产;英英对所有权的解释:为特定目的留出的任何区域“总统担心白宫对面的财产”;同义词:放置拥有的东西;某人拥有的任何有形或无形财产“那顶帽子是我的财产”;“他是一个有财产的人”同义词:财产|持有|物质财产a类所有成员共享的一个基本或本质属性一种构造,借此可以区分对象或个人“s Elf-confidence不是一个终结的财产”同义词:属性|维度任何在戏剧或电影布景中使用的可移动物品或对象同义词:prop关注第2、3和4条。再看属性:复制代码如下:attribute ['tribju:t,' trib ju :t]n . attribute;特质。归因;把…归于.对英英的解释:n .一种可以区分物体或个体的结构参见:property |一个维度,一个实体的抽象概念或特征。E | ascend | assign决定某事物在方案中的归属同义词:assign property和attribute都被解释为“属性”,但attribute强调的是不同于其他事物的特征/特性,本文还提出attribute是property的子集。在JavaScript中,属性和属性有明显的区别。众所周知,setAttribute是为DOM节点设置/添加属性的标准方法:varele=document . getelementbyid(' my _ ele ');ele.setAttribute('title ','这是我的元素');但大多数时候我们是这样写的:ele.title='这是我的元素';如果什么都没有发生,他们都工作得很好,他们似乎没有什么不同?通常,我们想得到我们设定的“属性”,我们喜欢这样写:alert(ele . title);这个时候,你会遇到问题。如果你设置的属性属于DOM元素本身的标准属性,不管是ele.setAttribute设置的还是ele.title设置的都可以正常获取,但是如果设置的属性不是标准属性,而是自定义属性呢?ele.setAttribute('mytitle ',' test my title ');alert(ele . my title);//未定义的警报(ele . GetAttribute(' my title '));//'测试我的标题' ele.yourtitle='您的测试标题';alert(ele . GetAttribute(' your title ');//null alert(ele . your title);//“您的测试标题”setAttribute设置的自定义属性只能通过标准的getAttribute方法获取;同样,由点设置的自定义属性不能通过标准方法getAttribute获得。在处理自定义属性的方式上,DOM属性的标准方法和dot方法不再有任何关联(上诉代码在IE6-中存在兼容性问题,后面会介绍)。设置和获取“属性”的这种差异的根源,其实是属性和属性的差异。由点设置的“属性”实际上是一个集合属性。如上所述,属性是属性的子集,所以点设置的属性不能通过只能获取属性的getAttribute方法获取。
根据图片理解属性和属性似乎更容易,getattribute无法获取不属于Attribute的属性也是合理的。但是这时你会发现另一个问题:setAttribute设置的属性应该也属于property,那么为什么不能用dot获取呢?换句话说,我们可以理解,只有标准属性可以同时使用标准方法和点方法,而对于自定义属性,标准方法和点方法不会相互干扰。
自定义属性不会相互干扰。那么,属性在JavaScript中就不是属性的子集,属性和属性之间只有一个交集,也就是一个标准属性,这样问题才能得到合理的解释。但是,在IE9-中,上诉结论无效。在IE9- browser中,除了标准属性,用户自定义属性也是共享的,即标准方法和点号都可以读写。成功设置的属性会在HTML中体现出来,从outerHTML中可以看出该属性已经添加到对应的标签中,所以如果该属性不是字符串类型的数据,就会调用toString()方法进行转换。但是在IE9-中,标准属性和自定义属性没有区别,所以属性仍然可以是任何类型的数据,不会调用toString()转换。非字符串属性不会在HTML中体现,但更严重的问题是容易导致内存泄漏。因此,如果不是字符串类型的自定义属性,建议使用成熟框架中的相关方法(如jQuery中的data方法)。getAttribute和dot()之间的差异。)虽然getAttribute和dot方法都可以获得标准属性,但是对于一些属性,如href、src、value等,它们获得的值是不同的。a href=' # ' id=' Link ' test Link/a img src=' http : img . png ' id=' image '/input type=' text ' value=' enter text ' id=' ipt '/script var $=function(id){ return document . getelementbyid(id);};警报($(“链接”)。getAttribute(' href ');//# alert($('link ')。href);//full path/file . html # alert($(' image ')。getAttribute(' src ')//img . png alert($(' image ')。src)//full path/img . png alert($(' ipt ')。getAttribute(' value ')//输入文本警报($('ipt ')。value)//输入text $('ipt ')。值=5;警报($(“ipt”)。getAttribute(' value ')//entertextalert($(' ipt ')。value)//5/script测试显示getattribute获取元素属性的文字值,而dot获取计算值。请参阅本文了解更多详细信息:属性和自定义属性。