DOM元素属性值如果设置为对象

Posted 愫幕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOM元素属性值如果设置为对象相关的知识,希望对你有一定的参考价值。

结论:内部会调用toString方法,将设置的对象转换为字符串添加给相应的属性;

这个问题呢,是通过jQuery的each方法中,回调函数的this指向问题而来;

我们知道,回调函数中的this如果指向的是基本数据类型,那么系统会自动将这个基本数据类型的值包装为对应的对象类型;

就比如:

数组里面存的是string类型的值,然后jq实例调用each方法,打印的this如下图所示:

this指向的基本数据类型的值被转换为了String类型;

 

但是这里说的不是这个问题,而是和这个问题类似,我们在给DOM元素设置属性值的时候,如果设置的是对象呢?

获取页面中的span,然后给两个span分别设置属性‘a’,属性值为两个对象:

 

看看设置后显示的结果:

第一个属性值:内部调用toString方法将{a : \'a\',b : \'b\'}对象转换为字符串设置;

第二个属性值:同理,也是调用toString方法将String对象的实例转换为字符串设置;

那么,我们在回到jQuery中,

如果用each方法给DOM添加属性值;

jQuery中的each方法的回调函数中的this,如果指向的是字符串类型的数据,那么在回调函数中操作this给元素添加属性值,是没有问题的,因为this即使被转换为了相应的对象类型数据,那么再给DOM元素添加的时候,内部会调用toString方法在对象类型的数据转换为字符串添加,就相当于‘又折腾回来了’;

那么,如果this指向的不是字符串类型数据,那么就操作参数吧~

好了,那就到这儿吧,如果有不对的地方,欢迎大家指正,望在前端的道路上共勉!

以上是关于DOM元素属性值如果设置为对象的主要内容,如果未能解决你的问题,请参考以下文章

js获取已知id的DOM元素

Js中的dom

JS-DOM样式操作

03-对JQuery对象的属性,特性以及数据的操作

黑马前端-Web APIs—设置/修改DOM元素内容和元素属性

DOM操作