2
var positions = [ "00", "01", "02", "03", "04", "05" ];
jQuery.each( positions, function(players) {
var playerNotesContent = document.createElement('div');
playerNotesContent.setAttribute('id', 'player_stats_block'+this);
$("#player_stats_block" + this).append (columns); 
})

.appendコマンドが で機能しない理由を知りたいのです+thisが、divの作成中に機能します。私は何を間違っていますか?下手な英語で申し訳ありませんが、よろしくお願いします!

更新しました!

var positions = [ "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18" ];

jQuery.each( positions, function(players, value) {

var player_id = $("#ctl" + value).attr("href").match(RegExp('players/([^/]+)/details.php$'))[1];
var playerlink = document.getElementById("ctl" + value);

GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.test.com/players/item/' + player_id,
onload: function(responseDetails) 
{
            var page = jQuery(responseDetails.responseText);
            var columns = jQuery('div.columns',page);
            var playerNotesContent = document.createElement('div');
            playerNotesContent.setAttribute('id', 'player_stats_block'+value);
            playerlink.parentNode.insertBefore( playerNotesContent, playerlink.nextSibling  );
            $('#player_stats_block00').append (columns); 
}
});
});

このように、すべての値が #player_stats_block00 に追加されます! あなたの回答をいくつか試しましたが、正しい #player_stats_blockXX に追加できませんでした。私の悪い英語で申し訳ありませんが、助けてくれてありがとう!

4

4 に答える 4

9

あなたのコードは div を作成し、その を設定してから、その IDでそれを検索idしようとしています。が DOM にまだ追加されていないため、ルックアップは失敗します。divdiv

var positions = [ "00", "01", "02", "03", "04", "05" ];

jQuery.each( positions, function(players) {
    // Here you're creating the div
    var playerNotesContent = document.createElement('div');

    // ...and setting its `id` (btw, you can just do playerNotesContent.id = value;)
    playerNotesContent.setAttribute('id', 'player_stats_block'+this);

    // ...and here trying to look it up
    $("#player_stats_block" + this).append (columns); 
});

div を に追加しようとしている場合columnsは、最後の行の代わりにこれが必要になる可能性があります。

columns.append(playerNotesContent);

append(呼び出したコンテナにコンテンツを追加することに注意してください。)

columnsそれはjQueryオブジェクトであると想定しています。さもないと:

$(playerNotesContent).appendTo(columns);

また

$(columns).append(playerNotesContent);

appendTo(あなたがそれを呼び出したコンテンツを、あなたが与えた引数に追加することに注意してください。これは の逆ですappend。)

また、作成中の div にはコンテンツがないことにも注意してください。そのため、スタイルを設定しない限り、サイズがなく、ページ上で見つけるのが少し難しくなります。:-)

以下は、 が jQuery オブジェクトであると想定し、 divcolumnsにいくつかのコンテンツを与えて表示できるようにする例です。ソース

HTML:

<div id="columns"></div>

JavaScript:

jQuery(function($) {

  var columns = $("#columns");
  var positions = [ "00", "01", "02", "03", "04", "05" ];

  jQuery.each( positions, function(players) {
    var playerNotesContent = document.createElement('div');
    playerNotesContent.innerHTML = "Player Stats";
    playerNotesContent.id = 'player_stats_block'+this;
    columns.append(playerNotesContent);
  });  

});
于 2012-05-04T13:45:05.323 に答える
1

私が変更することはほとんどありません。コールバックは、最初の引数ではなく、2 番目の引数として値を提供します。への呼び出しappendの後にスペースが続きます - これが壊れます。columns新しいに追加するか、その逆にするかはわかりませんdiv

var positions = [ "00", "01", "02", "03", "04", "05" ];

$.each( positions, function( index, value ) {
  $( "<div>", { id : 'player_stats_block' + value } )
    .appendTo( "#columns" );
});

columnsそもそも が dom 要素への正当な参照である場合は、それ$.appendTo()を主要な行の最後にある への呼び出しに戻すことができます。この変数が元の投稿で何を表しているかは不明でした。

于 2012-05-04T13:47:50.000 に答える
0
var positions = [ "00", "01", "02", "03", "04", "05" ];

jQuery.each( positions, function(index, value) {
   $('<div id="player_stats_block'+ value +'"></div>').append(columns);
});
于 2012-05-04T13:50:49.907 に答える
-1

これを $(this) に置き換えます -->

var positions = [ "00", "01", "02", "03", "04", "05" ];
jQuery.each( positions, function(players) {
var playerNotesContent = document.createElement('div');
playerNotesContent.setAttribute('id', 'player_stats_block'+$(this));
$("#player_stats_block" + $(this)).append (columns); 
})
于 2012-05-04T13:44:51.050 に答える