JS:从变量更改 OnClick 事件

Posted

技术标签:

【中文标题】JS:从变量更改 OnClick 事件【英文标题】:JS: Change OnClick Event from variable 【发布时间】:2016-08-17 22:58:07 【问题描述】:

我正在尝试更改按钮的 onclick 事件。 这是我的代码:

var onclickEvent = 'window.open("https://www.google.com", "", "widht:20px height:30px")'
btn.onclick = function() onclickEvent

【问题讨论】:

【参考方案1】:

你需要这样分配:

var onclickEvent = function() 
    window.open("https://www.google.com", "", "widht:20px height:30px");
;
btn.onclick = onclickEvent;

使用您拥有的字符串,您唯一的选择是eval,这被认为是不好的做法,不推荐:

var onclickEvent = 'window.open("https://www.google.com", "", "widht:20px height:30px")';
btn.onclick = function()  eval(onclickEvent); ;

在这种情况下,您应该考虑此表达式中真正动态的内容并为其使用变量而不是评估整个 javascript 字符串。例如,如果这是 url,那么你可以有类似的东西:

var onclickEvent = function(url) 
    window.open(url, "", "widht:20px height:30px");
;

var url = 'https://www.google.com';
btn.onclick = function()  onclickEvent(url); ;

【讨论】:

但我想将 onclickEvent 用作字符串,以便更改函数。 onclickEvent 是来自文本框的字符串。 这是非常糟糕的做法,因为您需要使用eval,如我的答案所示来执行此代码。我建议您重新考虑您的设计。 为什么必须是字符串?您需要在字符串中更改什么?你不能将参数传递给更新字符串的函数吗?

以上是关于JS:从变量更改 OnClick 事件的主要内容,如果未能解决你的问题,请参考以下文章

从 javascript onclick 返回值到变量或使用 onclick 更改全局变量

onclick 事件与对象

请我这种onclick事件,点击获取是当前行数的内容

js点击事件

js 函数定义的两种方式以及事件绑定(扫盲)

关于JS中function onclick()嵌套的问题