使用 innerHTML 将动态参数传递给 JavaScript 函数

Cod*_*der 5 html javascript

我在使用innerHTML 将动态参数传递给JavaScript 函数时遇到问题。

下面包括我正在使用的当前代码:

var name = "test";

frm.innerHtml = '<button name="close" id="close" title="Cancel" type="button"
     onclick="closeTab('+name+');">Return</button>';
Run Code Online (Sandbox Code Playgroud)

当我调试closeTab()函数的代码时,name变量指定的参数是null.

我认为修改innerHTML属性时值的声明存在问题。

任何帮助将不胜感激。

谢谢

Nie*_*sol 5

您生成的代码是:

<button ... onclick="closeTab(test);">Return</button>
Run Code Online (Sandbox Code Playgroud)

你能看出出了什么问题吗?test当您实际上希望它是一个字符串时,它被视为一个变量。

我喜欢使用JSON.stringify使变量可解析(有点像var_exportPHP 中),但在这种情况下,您还需要转义引号。所以:

JSON.stringify(test).replace(/"/g,"&quot;")
Run Code Online (Sandbox Code Playgroud)

在您的按钮中使用它,而不仅仅是test.


Rob*_*obB 5

您的动态声明将参数作为变量传递,而不是参数的值。为了更正此问题,您必须将值作为字符串而不是变量传递,这是通过将变量括在单引号中并将其转义来实现的,如下所示:

var name = "test";

frm.innerHtml = '<button name="close"  id="close"  title="Cancel" type="button"
      onclick="closeTab(\''+name+'\');">Return</button>';
Run Code Online (Sandbox Code Playgroud)


Cod*_*der -1

我只是在innerHTML中使用了onclick =“closeTab(name);”>并且它起作用了。我想这有效,因为名称是全局变量。