【问题标题】:JQuery appending '[object, Object]' rather than imageJQuery 附加 '[object, Object]' 而不是图像
【发布时间】:2011-10-24 23:17:23
【问题描述】:

我正在使用 JQuery 的 $.getJSON 函数来下载一些图像的 url,我试图将它们输出到一个 div 中。我试图让输出看起来像这样:

<a href="the image url (shot.short_url)"><img src="the direct image url (shot.image_teaser_url)" /></a>

但是,它输出的是这个:

<div id="body-wrapper">
    <a href="http://drbl.in/300896">[object Object]</a>
    <a href="http://drbl.in/298080">[object Object]</a>
    <a href="http://drbl.in/290395">[object Object]</a>
    <a href="http://drbl.in/290324">[object Object]</a>
    <a href="http://drbl.in/268595">[object Object]</a>
    <a href="http://drbl.in/265197">[object Object]</a>
    <a href="http://drbl.in/256368">[object Object]</a>
    <a href="http://drbl.in/252519">[object Object]</a>
    <a href="http://drbl.in/242235">[object Object]</a>
    <a href="http://drbl.in/241676">[object Object]</a>
</div>

请你告诉我在输出图像的情况下我哪里出错了?

这是我的代码:

function work() {
            $('#body-wrapper').empty();
            $.getJSON("http://dribbble.com/jakekrehel/shots.json?callback=?", function(data){
                $.each(data.shots, function(i,shot){
                  var image = $('<img/>').attr('src', shot.image_teaser_url);
                  var title = '<a href=\"' + shot.short_url + '\">';
                  var string = title;
                  string = string + image;
                  string = string + '</a>';
                  $('#body-wrapper').append(string);
                });
              });
        }

【问题讨论】:

  • 这是一个对象而不是字符串。取消对 url 值的引用。
  • 谢谢,我现在用var image = '&lt;img src=\"' + shot.image_teaser_url + '\" /&gt;';

标签: javascript jquery html json


【解决方案1】:

image 是一个 jQuery 对象,而不是一个 String - 所以将它附加到一个 String 将产生 [object Object]

理想情况下,将所有内容都更改为对象 - 例如

$('#body-wrapper').append(
    $("<a/>",{"href": shot.short_url}).append(
    $("<img/>",{"src": shot.image_teaser_url}));

或作弊并这样做 字符串 = 字符串 + image.html();

两者都应该工作

注意:我在没有语法检查的情况下输入了那些,并且有很多括号,尽我所能!

【讨论】:

    【解决方案2】:

    在您的 .each() 回调中试试这个

    // create image
    var image = $('<img>').attr('src', shot.image_teaser_url);
    
    // create anchor and append image
    var anchor = $('<a>').attr('href', shot.short_url).append(image);
    
    // append anchor to container
    $('#body-wrapper').append(anchor);
    

    【讨论】:

    • 我改用var image = '&lt;img src=\"' + shot.image_teaser_url + '\" /&gt;';,效果很好。
    • @XcodeDev 不,它没有。如果image_teaser_urlshort_url 字符串包含任何HTML 字符,它可能会弄乱您的文档,或者更糟的是,引入XSS 漏洞。请改用适当的 DOM 方法。
    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2018-05-24
    • 2019-09-19
    相关资源
    最近更新 更多