2

2つの変数を1つに組み合わせようとしているim、古典的な本の方法

a = 1;
b = "bla";
c = a + b;

ただし、変数の1つにhtml()jquery関数がある場合、結果はこの変数のみになり、それ以上にはなりません。どうしてこれなの?そして、私はそのような場合に何をすべきですか?

すべてのJSコード

    $("#target").click(function() {
$('#myTable tr:last').after('<tr><td>Bla</td><td><div class="remove">REMOVE</div></td></tr>');
});
$("#myTable").on('click', '.remove', function(event) {
  $(this).parent().parent().remove();
});

$("button").click(function() {
  var input = $("input").val();
  var table = $("#myTable").html();
  var output = input + "www" + table;
  $(".result").html(output);
});

関連コード:

$("button").click(function() {
  var input = $("input").val();
  var table = $("#myTable").html();
  var output = input + "www" + table;
  $(".result").html(output);
});

html出力は、テーブルの内容のみを出力し、他の変数は出力しません。varsの組み合わせは確かに機能しますが、html()がある場合。そのうちの1つでは、この変数のみが出力されます。これはどのようなソースですか?

http://jsbin.com/ucopun/9/edit

動作しないことを確認するには、入力に何かを入力して結果をクリックします。

4

4 に答える 4

4

.html()DOMノードからHTMLを設定および取得します。.text()ノード内のテキスト値を処理するものと混同しないでください。

あなたはこのようなことをしようとしているのかもしれません:

 var input = '<div>' + $("input").val() + 'www</div>';
 var table = $("#myTable").html();
 var output = input + '<table>' + table + '</table>;

率直に言って、あなたのHTMLは複雑すぎると思います。なぜテーブルの中にdivを置くのですか?コードを減らして、divだけで機能させることができます。

于 2012-12-12T20:24:11.990 に答える
2

問題は$("#myTable").html();、開始タグと終了タグなしでテーブルhtmlを返す<table></table>ため、後でテキストを切り詰められたhtmlテーブルコードに連結すると、ブラウザはテキストがテーブルに属していると解釈しますが、レンダリング方法がわかりません。

簡単な解決策は、適切なテーブルを出力して、テキストが正しく表示され、テーブルから分離されるようにすることです。そのためには、次の行を置き換えるだけです。

var table = $("#myTable").html();

これのために:

var table = '<table>' + $("#myTable").html() + '</table>';
于 2012-12-12T20:33:38.480 に答える
1

出力変数に入力したすべてのテキストがそこにあります。問題は、$(".result").html(output)HTML以外のものを無視することです。このアラートを追加して、自分自身にそれを証明してください。

$("button").click(function() {
  var input = $("input").val();
  var table = $("#myTable").html();
  var output = input + "www" + table;
  alert(output);
  $(".result").html(output);
});
于 2012-12-12T20:24:46.390 に答える
1

outputソースを確認します(またはアラートボックスにの値を表示します)。

$("button").click(function() {
  var input = $("input").val();
  var table = $("#myTable").html();
  var output = input + "www" + table;
  alert (output);
  $(".result").html(output);
});

入力フィールドの値と「www」が結果のdivのhtmlに追加されていることがわかります。レンダリングされていないだけです。

クラスではなくid属性を使用して、:のターゲットを定義することを検討してください.html(output)

<div id="result">...</div>

$("#result).html(output);
于 2012-12-12T20:26:17.043 に答える