首页  >  问答  >  正文

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

大家讲道理大家讲道理2749 天前273

全部回复(5)我来回复

  • PHP中文网

    PHP中文网2017-04-10 14:35:52

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

    回复
    0
  • PHPz

    PHPz2017-04-10 14:35:52

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

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 14:35:52

    楼上的搞得太复杂了。

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

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-10 14:35:52

    要娶得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 还会遍历出一个对象从其原型链上继承到的可枚举属性.

    为刚才的失误补一张图:

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 14:35:52

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

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

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

    回复
    0
  • 取消回复