首页 > 关于js的一点小问题

关于js的一点小问题

啊错了,发上来的时候眼花了,其实代码是这样的:

请输入代码
styles={"color":"blue","width":"10"}
    node=document.getElementById("mart");
    for (i in styles){
        node.style.i=styles[i];//这里肯定是错的,但是我想表达这个意思,就是i在这里变成styles里面的key。就是把styles里面的键值对赋在style样式里
    }

请教一下如何实现我想要的这个效果

T T刚才发现不对,现在纠正了


楼上的搞得太复杂了。

    styles={"color":"blue","width":"100px"}
    node=document.getElementById("backtop");
    for (i in styles){
        if (styles.hasOwnProperty(i)){
            node.style[i]=styles[i];
         }
    }

使用现成的框架可以轻易的做到,为什么还要纠结呢?

$('#mart').css(styles); 

http://jsfiddle.net/pingjiang/8j1zfz22/1/


1.你的for循环少了左括号.
补上左边括号后.

for(i in styles){
  //i 依次输出 a b
  console.log(i);
};

2.题目意思的感觉不是很明确,
我猜是想将node对象color和width属性通过for循环来设置某个值那么可以这样

styles={a:'color',b:'width'};
stylesValue = {a:'red',b:'10px'};
for(i in styles){ 
  node.style[styles[i]] = stylesValue[i];
};

node.style[i] = styles[i];

要娶得Object对象的key,并同时修改node的样式的话,建议这么做:
UPDATE:

Object.keys(styles).forEach(function(key) {
 node.style[key] = styles[key];
});

题主改完之后,心中疑虑减少了不少。
好吧,补上文档
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

注意Object.keys和for..in方法之间的区别

两者的主要区别是 for-in 还会遍历出一个对象从其原型链上继承到的可枚举属性.

为刚才的失误补一张图:

【热门文章】
【热门文章】