我在使用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属性时值的声明存在问题。
任何帮助将不胜感激。
谢谢
您生成的代码是:
<button ... onclick="closeTab(test);">Return</button>
Run Code Online (Sandbox Code Playgroud)
你能看出出了什么问题吗?test当您实际上希望它是一个字符串时,它被视为一个变量。
我喜欢使用JSON.stringify使变量可解析(有点像var_exportPHP 中),但在这种情况下,您还需要转义引号。所以:
JSON.stringify(test).replace(/"/g,""")
Run Code Online (Sandbox Code Playgroud)
在您的按钮中使用它,而不仅仅是test.
您的动态声明将参数作为变量传递,而不是参数的值。为了更正此问题,您必须将值作为字符串而不是变量传递,这是通过将变量括在单引号中并将其转义来实现的,如下所示:
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)