0

皆さん、

私のページ(http://playdota.thilisar.cz)にJavaScriptファイル(以下のコード)があり、アイコンの端を変更して(実際には、新しい画像をロードする必要があります)、ロードする効果があります。情報(これまでのところプレーンテキストのみ)は、mouseoverイベントでID「info」のdivに入れられます。mouseoutイベントでは、元の画像を同じ位置にロードする必要があります。ただし、情報を書き込むだけで、アイコンを「[objectObject]」テキストに置き換えます。

私の英語はあまり上手ではないので、あなたがこれを理解してくれることを願っています。

回答ありがとうございます。

function showInfo(id){                     //Using jQuery 1.7.2
  document.getElementById('ses').innerHTML=$(function(){
    $.ajax({
        url: "sentinel_str/"+id+"-info.html"
    }).done(function(data){
        $("#info").html(data)
    })
    $("#ses").find("li").mouseover(function(){
        $id=$(this).find("img").attr("id")
        $(self.document[$id].src='look/icons/'+$id+'_hover.jpg')
    })
    $("#ses").find("li").mouseout(function(){
        $id=$(this).find("img").attr("id")
        $(self.document[$id].src='look/icons/'+$id+'.jpg')
    })
})};

CHEESEWARLOCKの回答に感謝します

私を助けようとしたすべての人に感謝します。


4

4 に答える 4

1

要素のinnerHTMLをjqueryオブジェクトの戻り値の値に設定しています。実際には、この関数の「toString」値をHTMLのコンテンツとして配置すると言っています。

持っているという意味ですか?私がそれを間違って読んでいない限り。document.getElementById('ses')。innerHTML = $(function(){

于 2012-07-05T13:20:11.083 に答える
0

「マウスオーバー」と「マウスアウト」のハンドラーは、私にはかなり混乱しているように見えます。電話をかける必要はまったくありませんgetElementById()<img>jQueryを使用していて、それを使用してタグを見つけることができます。それらを見つけたら、それらを見つけました。それらを再度見つける必要はありません。

$("#ses").find("li").mouseover(function(){
    $(this).find('img').prop('src', function() {
      return 'look/icons/' + this.id + '_hover.jpg';
    });
})
$("#ses").find("li").mouseout(function(){
    $(this).find('img').prop('src', function() {
      return 'look/icons/' + this.id + '.jpg';
    });
})

の2番目の引数として関数を渡すと.prop、DOM要素の状態を直接使用してプロパティの値を計算できます。

また、jQueryによってサニタイズされ、「mouseover」や「mouseout」よりも少し信頼性の高い「mouseenter」や「mouseleave」を使用することもできます。

編集—うわー、私はちょうど「ズームアウト」して、このすべてのコードが値として設定されていることに気づきましたinnerHTML。これは意味がありません。横行するコピー/貼り付けなどの場合のように見えます。

于 2012-07-05T13:16:48.980 に答える
0

[object Object]HTML要素のコンテンツをjQueryオブジェクトに設定しているために取得しています。jQueryコードの一部を呼び出したい場合は、それをでラップする必要はありません$()。コードを直接呼び出すことができます。したがって、この行を削除します。

document.getElementById('ses').innerHTML=$(function(){

そしてこの行:

}) 

を呼び出すと、残りのコードが実行されますshowInfo(id)

于 2012-07-05T13:23:54.057 に答える
0

以下に書かれたコードはあなたの問題を解決し、さらに短いです。一度チェックしてください。

var id;
$('#ses').find('li').each(function(){
   $(this).mouseover(function(){
    var image=$(this).find('img');
      id=$(this).find('img').attr('id');
     $('#id').hide();
$(this).append('<div>'+id+'</div>');
});
$(this).mouseout(function(){
$(this).html('');
$('#id').show();
});

});
于 2012-07-05T13:27:56.207 に答える