0

伙计们,

我在我的页面(http://playdota.thilisar.cz)上有一个 JavaScript 文件(下面的代码),它必须具有修改图标边缘的效果(实际上,它必须加载新图片)并加载信息(到目前为止只有纯文本)在 mouseover 事件中进入 ID 为“info”的 div;在 mouseout 事件上,它必须将原始图片加载到相同的位置。但它只写入信息并用“[object Object]”文本替换图标。

我希望,你明白这一点,因为我的英语不是很好。

感谢您的回答。

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')
    })
})};

关闭感谢奶酪沃洛克的回答

谢谢大家,谁试图帮助我。


4

4 回答 4

1

您正在将元素的 innerHTML 设置为 jquery 对象的返回值。实际上,您是说将此函数的“toString”值作为 HTML 的内容。

你的意思是有吗?除非我读错了。document.getElementById('ses').innerHTML=$(function(){

于 2012-07-05T13:20:11.083 回答
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 回答
0

“mouseover”和“mouseout”处理程序对我来说看起来很困惑。根本不需要打电话getElementById();你正在使用 jQuery,你可以找到<img>它的标签。一旦你找到了它们,你就找到了它们;无需再次找到它们。

$("#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';
    });
})

传递一个函数作为 的第二个参数.prop让您可以直接使用 DOM 元素状态计算属性的值。

此外,您可能想使用“mouseenter”和“mouseleave”,它们由 jQuery 清理,比“mouseover”和“mouseout”更可靠。

编辑——哇,我只是“缩小”并注意到所有这些代码都被设置为一个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 回答