我正在尝试将变量的内容传递给动态更改的onclick
设置。代码的开头抓取现有的onclick
信息,将其转换为字符串,对其进行更改,然后尝试将其重新放入。
问题是它插入了我的变量名的文本而不是变量的内容。控制台日志返回ƒ () { onClickFill(ocstr); }
。我正在调用的函数是一个基本的location.href=(variable)
,所以如果有办法消除额外的函数,我就是全部。感谢
旧:
var ocstr = b.onclick.toString();
ocstr = ocstr.replace(/to=.*/, tostr.slice(0, -1) + "';");
ocstr = ocstr.slice(43).slice(0,-4);
b.onclick = function () { onClickFill(ocstr); };
console.log(b.onclick);
新:
var ocstr = b.onclick.toString().replace(/to=.*/, tostr.slice(0, -1) + "';").slice(43).slice(0,-4);
b.onclick = new Function("location.href='" + ocstr + "'");
console.log(b.onclick);
答案 0 :(得分:0)
从字符串动态创建的函数不是以这种方式构建的,并且由于安全性和性能问题,通常不建议首先使用字符串动态构建。相反,可能变化的函数部分应该基于某些东西设置为参数或条件逻辑。
但是,可以使用 Function()
constructor :
var ocstr = b.onclick.toString();
ocstr = ocstr.replace(/to=.*/, tostr.slice(0, -1) + "';");
ocstr = ocstr.slice(43).slice(0,-4);
b.onclick = new Function("function(){ onClickFill(ocstr) }");
console.log(b.onclick);