2012-09-05 30 views
0

我有一个参数items的回调包含一个数组:加入数组导致加入他们为对象

[<article>..</article>,<article>...</article>,<article>..</article>] 

我需要做的是加入这些项目,因此我所做的是:

items = items.join(''); 

但是,当我console.log(items)我看到:

[object HTMLElement][object HTMLElement][object HTMLElement][object HTMLElement] 

我如何合并这个数组正确吗?

+0

你期望发生什么?合并文章文本?如果是这样,你需要创建一个元素的innerText属性数组。而不是像你那样做加入。 –

回答

1

你有对象,其中他们不能被自动序列化为HTML与join()

如果你的浏览器支持outerHTML,你可以做...

var html = $.map(items, function(item) { return item.outerHTML; }).join(""); 

jsFiddle

否则,你可以做...

var fauxDocFrag = $("<div />"); 
$.each(items, function(key, item) { fauxDocFrag.append(item); }); 
var html = fauxDocFrag.html(); 

jsFiddle

+0

但是我怎么会在加入它们之前将'console.log'项目显示为一个文本数组? – Michelle

+2

@Severus您的浏览器似乎有用。 – alex

1

在这里,我已经完成了上述问题的完整箱。你可以通过演示链接。

演示http://codebins.com/bin/4ldqp7n HTML

<input type="button" id="btn1" value="Get Object Array Text" /> 
<input type="button" id="btn2" value="Reset" /> 
<div id="result"> 
</div> 

jQuery的

$(function() { 
    var items = ["<article>Article-1:Text</article>", "<article>Article-2:Text</article>", "<article>Article-3:Text</article>", "<article>Article-4:Text</article>", "<article>Article-5:Text</article>"]; 

    $("#btn1").click(function() { 
     var result = ""; 
     $.each(items, function(key, item) { 
      if ($(item).text().trim() != "") { 
       if (key > 0) result += " "; 
       result += $(item).text().trim(); 
      } 
     }); 
     if (result != "") { 
      $("#result").html(result); 
      $("#result").show('slow'); 
     } 
    }); 

    //Reset Result 
    $("#btn2").click(function() { 
     $("#result").html('').css('display', 'none'); 
    }); 
}); 

演示http://codebins.com/bin/4ldqp7n