变量中的函数参数作为字符串javascript失败

变量中的函数参数作为字符串javascript失败,javascript,Javascript,这项工作: setTheme('#222','#000','wheat','red','wheat','none','none'); 这不起作用:= var theme01 = "'#222','#000','wheat','red','wheat','none','none'"; <br> setTheme(theme01); console.log(theme01) = '#222','#000','wheat','red','wheat','none',

这项工作:

setTheme('#222','#000','wheat','red','wheat','none','none');
这不起作用:=

var theme01 = "'#222','#000','wheat','red','wheat','none','none'"; <br>
setTheme(theme01);

console.log(theme01) = '#222','#000','wheat','red','wheat','none','none'
var theme01=“'222'、'000'、'wheat'、'red'、'wheat'、'none'、'none'
设置主题(主题01); console.log(theme01)=“222”、“000”、“小麦”、“红色”、“小麦”、“无”、“无”
那么转换成字符串会把事情搞砸吗

在捕捉画布之前,我将切换各种主题?我用CSS完成了所有工作,但canvas并没有捕获CSS更改或CSS注入。所以我现在已经准备好使用Vanilla Javascript了,但是在几个小时的测试搜索之后需要帮助,以便将一个变量传递给我的函数。吼叫声救命啊

我在这方面才做了几周,所以这是在Wordpress工作后的一段学习曲线

function setTheme(topp,bott,txt,hlin,vlin,fOrb,sOrb) {  
  var xx = document.querySelectorAll(".hlin");
  for (var i = 0; i < xx.length; i++) {
    xx[i].style.stroke = hlin;
  }

  var xx = document.querySelectorAll(".vlin");
  for (var i = 0; i < xx.length; i++) {
    xx[i].style.stroke = vlin;
  }
  var xx = document.querySelectorAll(".txt");
  for (var i = 0; i < xx.length; i++) {
    xx[i].style.fill = txt;
  } 
  document.getElementById("svg_20").style.fill = topp; 
  document.getElementById("svg_1").style.fill = bott;
  document.getElementById("svg_2").style.fill = bott;
  document.getElementById("svg_3").style.stroke = txt;
  document.getElementById("svg_5").style.stroke = txt;
  document.getElementById("svg_21").style.fill = fOrb;
  document.getElementById("svg_21").style.stroke = sOrb;
函数集主题(topp、bott、txt、hlin、vlin、fOrb、sOrb){
var xx=document.querySelectorAll(“.hlin”);
对于(变量i=0;i

})

是的,不能用逗号分隔的字符串交换参数列表。您应该使用数据结构来存储它们,如数组或对象。下面是一个它如何处理对象的示例

var theme01 = { topp: '#222', bott: '#000', txt: 'wheat' };
function setTheme ( options ) {
    document.getElementById("svg_20").style.fill = options.topp;
    document.getElementById("svg_1").style.fill = options.bott;
    document.getElementById("svg_3").style.fill = options.txt;
}
setTheme( theme01 )

字符串将是函数的一个参数。您可以使用
函数。使用拆分字符串作为第二个参数应用
)1,或者更简单地使用
扩展
运算符2)。演示:

(一)

(二)

(()=>{
const log=str=>document.querySelector(“#result”).textContent+=`${str}\n`;
常量参数字符串=“#222,#000,小麦”;
//没有骰子
log(“someFn(parameterString)=>无骰子”);
someFn(参数字符串);
//应用
log(“\nsomeFn.apply(null,parameterString.split(\”,\”)=>ah-yes,可以使用”);
someFn.apply(null,parameterString.split(“,”);
//或者使用扩展运算符
log(“\nsomeFn(…parameterString.split(\”,\”)=>啊,是的,这也行”);
someFn(…parameterString.split(“,”);
函数someFn(p1、p2、p3){
对数(p1);
对数(p2);
对数(p3);
}
})();

您可以使用将其作为数组传递,但不能传递一个项目字符串并使其成为多个参数

函数集主题(topp、bott、txt、hlin、vlin、fOrb、sOrb){
控制台日志(topp)
console.log(bott)
console.log(txt)
console.log(hlin)
控制台日志(vlin)
console.log(fOrb)
控制台日志(sOrb)
}
让项目=['#222'、'#000'、'小麦'、'红色'、'小麦'、'无'、'无']

setTheme(…items)
那么转换为字符串会把事情搞砸吗?不,但如果只传递一个参数,则所有setTheme的参数(但第一个)都未定义。。。无论您尝试做什么,都远没有意义,一个字符串将是一个单独的参数,您可能需要执行
函数setTheme(obj){…document.getElementById(“svg_20”).style.fill=obj.topp;…}
并将其称为
setTheme({topp:''222',bott:''000',txt:'wheat',hlin:'red vlin:'wheat',fOrb'none',sOrb:'none'))
而且您可能需要
var xx=document.queryselectoral(“.”+hlin)谢谢你,这么快的回复,我现在将破译这个并了解应用。至少我知道有一个解决办法。我坚持使用JavaScript来获得一个基础,在使用jQuery等“@瑞安,我的回答中除了JavaScript,没有别的东西了。”感谢您的快速响应,这太棒了:)