如何将变量内容传递给动态创建的onclick函数?

时间:2018-01-05 22:56:59

标签: javascript function variables onclick

我正在尝试将变量的内容传递给动态更改的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);

1 个答案:

答案 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);