Javascript element.setAttribute(';style';,';attribute:value;';)与element.attribute=';价值';
在javascript中,使用Javascript element.setAttribute(';style';,';attribute:value;';)与element.attribute=';价值';,javascript,html,internet-explorer,safari,Javascript,Html,Internet Explorer,Safari,在javascript中,使用 element.style.setAttribute('width', '150px'); 及 ? 我已经看到关键字不能用第一种方式工作(如),但是对于非关键字属性有区别吗?两者都是完全有效的。你能举一些用第二种方法不起作用的例子吗?您是否知道属性名需要先用大小写?例如,element.style.marginTop而不是不正确的element.style.marginTop。连字符在Javascript中是一个无效的标识符。我看到的唯一变化是画布。那么,给定一
element.style.setAttribute('width', '150px');
及
?
我已经看到关键字不能用第一种方式工作(如),但是对于非关键字属性有区别吗?两者都是完全有效的。你能举一些用第二种方法不起作用的例子吗?您是否知道属性名需要先用大小写?例如,
element.style.marginTop
而不是不正确的element.style.marginTop
。连字符在Javascript中是一个无效的标识符。我看到的唯一变化是画布。那么,给定一个元素,它们之间的区别是什么呢
element.width = '100px'
element.style.width = '100px'
element.setAttribute('width','100px')
element.style.setAttribute('width','100px')
因为我还没有从专家那里找到答案,所以我只能凭经验说出来
宽度是元素的一个暴露属性,如在对象car中setAttribute('color','red')
是一个函数,它将值指定给属性,如下所示
在car={color:'red',setAttribue:function(prop,val){this[prop]=val;}
将其视为一个功能原型
function element(){
this.color='blue' // default
this.setAttribute = function(prop, val){ this[prop]=val;}
}
car = new element()
car.color = 'red';
or
car.setAttribute('color','red');
现在,样式是一个特例,比如说,是如何以转换的方式显示事物,
不是它的原始样式。样式本身不会更改属性,这就是效果
您现在可以在画布中看到,就像以前在图像中看到的一样,这些图像的宽度和高度值太大
这是怎么回事?假设你有一个100x100像素的原始图形,图形标签
将在其中设置高度宽度100x100px(与画布的情况相同),然后
按样式将宽度和高度更改为200x200px,相同的图像将增长以适应
新的尺寸将被放大,但图像本身仍为100x100
好的,你可以测试一下,这样你就能理解解释了
有形象
<image id='f' src='whateveritis' width=100 height=100>
因此,请记住,使用图像、画布和all时,不要以样式为基础,而是以属性为基础
f = document.getElementById('f');
alert(f.width) // you get 200px
alert(f.getAttribute('width')) // you get 100px
div的默认大小或任何值为零
然后,您可以按样式设置其大小,但实际上大小仍为0x0px
但大多数情况下,程序将基于属性值工作,
不在样式值中
另外,还有一项措施,但将是你的家庭作业
那么f.scroolWidth是多少,如果f.scrollHeight与
宽度和高度(当然不滚动时)
最后一点需要考虑
即使我用汽车做了这个例子,元素也是不同的
因为属性颜色是隐藏的,但是可以访问样式
也就是说,元素的唯一真实属性是您编写的属性
直接输入html标记代码或使用setAttribute设置的标记代码
因为即使你修改
element.width是一种样式,而不是属性本身
因此,真正改变其价值的唯一方法是
element.setAttribute('width',x)
我自己也读过,发现了另一个问题
您可能会想,我将html标记保留为100x100,这就是为什么我
警报由200改为100
嗯,不是,不是这样的
您也可以为此进行测试,不要更改标记
命令一个f.setAttribute('width','300')
然后
在JQuery中,更改属性的唯一命令是$().attr
$().widt和$().css只需更改样式
最后
重要吗
是的,它是,因为即使对于图像和画布,使用的是属性而不是
样式,具有视觉效果的是样式而不是属性
也就是说,您可以将原始大小设置为200x200,这将是200x200
但如果您将样式更改为300x300,则图像将为300
从那时起,无论您将其属性设置为1000x1000,图像仍将保持不变
被视为300x300
但例如,对于画布程序,它正在处理的图像大小为1000x1000。要设置多个CSS值,最快的方法是使用
el.setAttribute('style','LIST-OF-STYLES');
要使用“推荐”样式对象,必须
el.style.ST1 = 'VA1';
el.style.ST2 = 'VA2';
...
还有el.style.setAttribute,但这更为冗长,应该只对Java开发人员有吸引力。我就是这么想的。对不起,我对关键字不起作用的部分感到困惑,将更新以修复。问题是第一种方法在Safari中不起作用,所以我想确保第二种方法适用于IE和Safari。
alert(f.width) // you get 200px
alert(f.getAttribute('width')) // you get 300px
el.setAttribute('style','LIST-OF-STYLES');
el.style.ST1 = 'VA1';
el.style.ST2 = 'VA2';
...