代码之家  ›  专栏  ›  技术社区  ›  rosscj2533

element.setattribute('style','attribute:value;')与element.attribute='value'

  •  15
  • rosscj2533  · 技术社区  · 15 年前

    在javascript中,使用

    element.style.setAttribute('width', '150px');
    

    element.style.width = '150px';
    

    是吗?

    我已经看到关键词不能用第一种方式(比如 this )但是对于非关键字属性有区别吗?

    2 回复  |  直到 15 年前
        1
  •  10
  •   BalusC    15 年前

    两者都是完全有效的。你能举出一些第二种方式不起作用的例子吗?您知道属性名需要 骆驼 第一?例如。 element.style.marginTop 而不是错误的 element.style.margin-top .连字符就是javascript中的无效标识符。

        2
  •  10
  •   Avenida Gez    12 年前

    我看到的唯一变化是画布。但是,那么,给定一个元素,两者之间的区别是什么

    element.width = '100px'
    element.style.width = '100px'
    element.setAttribute('width','100px')
    element.style.setAttribute('width','100px')
    

    因为我还没有从专家那里找到答案,只有根据经验,我才会这么说。

    宽度是元素的一个公开属性,如在对象汽车中。color='red'; 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>
    

    看到了吗?100x100px

    现在添加样式

     style='width:200px'
    
    <image id='f' style='width:200px' src='whateveritis' width=100 height=100>
    

    看到了吗?现在它被放大了

    现在获取它的属性

    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('宽度',x)

    我自己读过这个,发现了另一个问题 你可能会想,我把HTML标签留下了100x100,这就是为什么我 警报是100而不是200

    不是这样的

    你也可以测试这个,不要改变标签。

    命令a f.setattribute('width','300');

    然后

    alert(f.width) // you get 200px
    
    alert(f.getAttribute('width')) // you get 300px
    

    在jquery中,更改属性的唯一命令是$().attr

    $().widht和$().css只需更改样式

    终于

    重要吗?

    是的,因为即使图像和画布使用的属性不是 样式,产生视觉效果的是样式而不是属性 也就是说,您可以将原始大小设置为200x200,这将是200x200 但如果按样式更改为300x300,则图像将为300 从那时起,无论您将其属性设置为1000x1000,图像仍将 被视为300x300 但是,例如,对于一个画布程序,它正在处理的图像大小是1000x1000。