关于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刚才发现不对,现在纠正了

阅读 3.9k
5 个回答

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];

楼上的搞得太复杂了。

    styles={"color":"blue","width":"100px"}
    node=document.getElementById("backtop");
    for (i in styles){
        if (styles.hasOwnProperty(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 还会遍历出一个对象从其原型链上继承到的可枚举属性.

为刚才的失误补一张图:
请输入图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题