0

我正在使用 javascript 创建一个按钮元素并将 onclick 事件绑定到它。我正在使用下面的代码

function getElement (rowObject )
       {
          var element ='<div id="deptNmBtn"><button onClick=getDepartMentNm("' +   rowObject.empName+'")> <span>Add</span></button></div>';
          return element;
       }

但在这里我传递了一个参数员工姓名。如果员工姓名作为没有任何空格的单个字符串传递,但当使用空格传递时,它会引发 javascript 错误,则该代码有效。

    SyntaxError: unterminated string literal

有没有人遇到过这个错误?任何帮助将不胜感激。谢谢。

4

2 回答 2

1

您需要使用以下内容包装内联点击处理程序'

function getElement (rowObject) {
  var element = '<div id="deptNmBtn"><button onClick=\'getDepartMentNm("' +   rowObject.empName + '")\' ><span>Add</span></button></div>';
  return element;
}

演示

于 2012-09-03T19:14:15.747 回答
0

您的代码中存在引用问题。尝试这个:

var element = '<div id="deptNmBtn"><button onClick="getDepartMentNm(\'' + rowObject.empName + '\')" ><span>Add</span></button></div>';

如您所见, for 的值 未加onClick引号。浏览器可以解析不带引号的属性,但它们最终会以空格结尾。实际上,您解析的代码如下所示:

<button onClick=getDepartMentNm("Employer Name")>

HTML 解析器从第一个空格中剪切函数调用,并被Name")忽略,因为它不能被识别为有效的 HTML。JavaScript 是从“右到左”执行的,JS 尝试做的第一件事就是为函数参数获取一个有效的字符串。现在 HTML 解析器已经切掉了这个函数,JS 找不到右引号,所以它抛出了一个错误。

于 2012-09-03T19:18:48.077 回答