我想创建一个类似 jq中的css()里面的函数

图片描述

我想要是的changeColor 函数里面怎传入一个json呢? 请大神赐教

阅读 1.5k
3 个回答
function changeColor(dom, fn(str)) {//这是设置样式的原方法
    for(var i=0,len=attr_arr.length;i<len;i++){
        setStyle(dom,i,attr_arr[i]) ;//调用新的样式设置的方法
    }
    
  }
function setStyle(a,b,c){
    var somthing=a+"."+"style"+"."+b+"="+c+";";//我不知道这样平起来对不对,或者你可以直接a.attr(b,c);
    return somthing;
}
function fn(str){//这个就是那个josn的处理方法(用这个方法替换josn数据)
    var Str=str;
    var reg=/\:([^\:]+)\;/g;
    var attr=str.match(reg);//获取属性值数组
    var attr_n=Str.replace(attr,"");//获取属性名数组
    for(var i=0,len=attr.length;i<len;i++){
         var attr_arr=[];
         attr_arr.push(attr[i]+":"+attr_n[i]);//放到一个新数组内,没办法,我倒是想直接返回两个数组,貌似不行,逻辑上说不通。
    }
   return  attr_arr;//返回的数组,大概的格式如 :attr_arr=[color:#222;background:#333;];这样的
}

以上的谨为思路,具体每步的实现还得楼主自己去玩
这需求...好吧,希望能帮到你

不知道是不是你想要的:

  // ES5
  function changeColor(dom, style) {
    dom.style = Object.assign(dom.style, style);
  }

  // ES6
  function changeColor(dom, style) {
    dom.style = {...dom.style, ...style};
  }

真正要写估计顾及的方面很多。。。

function changecolor(dom,obj){
    for(var i in obj){
      console.log(i)
      dom.style[i]=obj[i];
    }
 }//大概这样就可以了,但真正用起来,估计坑会不少。。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题