5

innerHTML を使用して動的パラメーターを JavaScript 関数に渡す際に問題が発生しています。

以下は、私が使用している現在のコードです。

var name = "test";

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

closeTab()関数のコードをデバッグすると、name変数で指定されたパラメーターはnull.

innerHTML プロパティを変更する際の値の宣言に問題があると思います。

どんな助けでも大歓迎です。

ありがとう

4

5 に答える 5

5

動的宣言は、パラメーターの値ではなく、パラメーターを変数として渡しています。この問題を修正するには、値を変数ではなく文字列として渡す必要があります。これは、以下に示すように、変数を一重引用符で囲んでエスケープすることによって実現されます。

var name = "test";

frm.innerHtml = '<button name="close"  id="close"  title="Cancel" type="button"
      onclick="closeTab(\''+name+'\');">Return</button>';
于 2012-07-04T03:17:54.890 に答える
4

結果のコードは次のとおりです。

<button ... onclick="closeTab(test);">Return</button>

何が悪いのか分かりますか?test実際には文字列にするつもりだったのに、変数として扱われています。

JSON.stringifyは変数を解析可能にするために使用するのが好きですが (PHP のようなものですvar_export)、この場合は引用符もエスケープする必要があります。そう:

JSON.stringify(test).replace(/"/g,"&quot;")

の代わりにボタンでそれを使用しますtest

于 2012-07-04T03:09:59.483 に答える
0

DOM の使用:

var name="test";
var el = document.createElement("button");
el.name = "close";
el.id = "close";
el.title = "Cancel";
el.type = "button";
el.onclick = function() {  // an inline function that will be executed when el is clicked
    closeTab(name);        // `name` here contains `"test"`
};
frm.appendChild(el);

innerHTML乱雑で、時には遅くなる可能性があるため、使いすぎることはお勧めしません。

于 2012-07-04T04:55:11.193 に答える
0

あなたのhtmlが -

<form id='frm'>

</form>

あなたのJSは-

var name = "test";
var innerHtml = "<button name='close' id='close' title='Cancel'   type='button'>Return</button>";
$("#frm").html(innerHtml);
$("#close").attr("onclick","javascript:closeTab('"+name+"');");

これをチェックしてください - http://jsfiddle.net/arindam006/avgHz/1/

これはこれを達成するための最もクリーンな方法ですが、上で誰もが提案したように、innerHtml は適切な方法ではありません。

于 2013-06-12T14:55:40.923 に答える
-1

私は単にinnerHTMLでonclick="closeTab(name);">を使用し、それは機能しました。動作したcoz名はグローバル変数だと思います。

于 2012-07-04T03:19:56.090 に答える