0

私はjavascriptを使用してボタン要素を作成し、onclickイベントをそれにバインドしています。私は以下のコードを使用しています

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

しかし、ここではパラメータEmployeeNameを渡しています。このコードは、従業員名がスペースなしで単一の文字列として渡された場合に機能しますが、スペース付きで渡された場合は、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>';

ご覧のとおり、の値 onClickは引用符で囲まれていません。ブラウザは引用符で囲まれていない属性を解析できますが、その場合はスペースになってしまうことが予想されます。実際、解析されたコードは次のようになります。

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

HTMLパーサーは、最初のスペースから関数呼び出しを切り取り、Name")有効なHTMLとして認識できないため、無視されます。JavaScriptは「右から左」に実行され、JSが最初に実行しようとするのは、関数の引数の有効な文字列を取得することです。これで、HTMLパーサーが関数をカットし、JSが終了引用符を見つけることができないため、エラーがスローされます。

于 2012-09-03T19:18:48.077 に答える