如何解析 [object HTMLDivElement]
How to parse [object HTMLDivElement]?
我在将对象注入回 DOM 时遇到问题。我必须抓住一个div 把它放在一个数组中,然后注入到 DOM。但是当我注入回 DOM 时,我显示 [object HTMLDivElement] 而不是div。我错过了什么。代码是在jsfiddle设置的。http://jsfiddle.net/rexonms/zdzdnuo7/
提前致谢
.HTML
<!-- Section A -->
<div id="stories">
<ul class="slider"></ul>
</div>
<!-- Section B -->
<div id="x">
<div class="story">A</div>
<div class="story">B</div>
<div class="story">C</div>
<div class="story">D</div>
<div class="story">E</div>
</div>
JAVASCRIPT
var items = $('.story');
var itemsPerSlide = 2;
var parent = [];
var children = [];
// Divide the items in chunks
for(var i=0; i<items.length; i++){
if(i<itemsPerSlide){
children.push(items[i]);
}
else{
itemsPerSlide = itemsPerSlide + i;
childrenToParent(children, parent);
children = [];
children.push(items[i]);
}
}
childrenToParent(children, parent);
$('.slider').append(parent);
function childrenToParent(children, parent){
parent.push("<li>" + extractEls(children) + "</li>");
}
function extractEls(children){
var toReturn = '';
for(var i = 0; i<children.length; i++){
toReturn += children[i];
}
return toReturn;
}
如果要使原始容器完好无损,只需克隆要复制其节点的容器并从复制的容器中获取节点。
你把它们放到数组中,然后多次运行一个循环,相反,你可以运行一个循环一次,同时把它们放在你的.slider
类中。
工作/更新:
JS Fiddle Link
JS Part:
var storyCopy = $("#x").clone();
var items = storyCopy.find(".story");
var itemsPerSlide = 2;
var counter = 0;
var LIElement = document.createElement("li");
for(var i=0; i<items.length; i++) {
LIElement.appendChild(items[i]);
counter++;
if(counter >= itemsPerSlide) {
$('.slider').append(LIElement);
LIElement = document.createElement("li");
counter = 0;
}
}
$('.slider').append(LIElement);
我相信
这一行是你的问题:
toReturn += children[i];
这应该是代替它:
toReturn += $(children[i]);
将outerHTML
添加到子项
function extractEls(children){
var toReturn = '';
for(var i = 0; i<children.length; i++){
toReturn += children[i].outerHTML; //changed
}
return toReturn;
}
演示
您需要
在最终代码中添加.html()
。 我已经用这个链接更新了你的编码
您遇到的问题是您将 DOM 节点视为字符串。将元素添加到字符串会导致调用 .toString(),并获得看到的输出。
如果您只是想将它们分组并将它们放在 lis 中,您可以使用 slice 和 wrapAll 轻松完成。
var storyHolder = $("#x").clone();
var stories = storyHolder.find(".story");
var itemsPerSlide = 2;
for (var i = 0; i < stories.length; i += itemsPerSlide ) {
var li = $("<li/>");
stories.slice(i, i + itemsPerSlide ).wrapAll(li);
}
$(".slider").append(storyHolder.children());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Section A -->
<div id="stories">
<ul class="slider"></ul>
</div>
<!-- Section B -->
<div id="x">
<div class="story">A</div>
<div class="story">B</div>
<div class="story">C</div>
<div class="story">D</div>
<div class="story">E</div>
</div>
相关文章:
- 在循环遍历对象 HTMLDivElement 时,应用 ChileNode 样式 zindex 在 firefox 和
- React警告:ReactMount:根元素已从其原始容器中删除.新容器:[object HTMLDivElement]
- 未捕获的类型错误:对象#<HTMLDivElement>没有方法'偏移'
- 使用javascript时返回[object HTMLDivElement]
- 使用 jQuery 更改 HTMLDivElement 中的所有 id
- 如何解析 [object HTMLDivElement]
- 语法错误,无法识别的表达式:[对象 HTMLDivElement]输入:复选框[名称=]:选中
- 显示[object HTMLDivElement]的内容
- 将jQuery应用于Google Maps控件中的HtmlDivElement对象
- 未捕获的类型错误:对象#<HTMLDivElement>没有方法'addPanel'
- MooTools Slider控件,TypeError:Object#<HTMLDivElement>没有方
- 未捕获的类型错误:对象#<HTMLDivElement>没有方法'绑定'
- 如何在IE7中检查HTMLDivElement
- 如何搜索HTMLDivElement的子元素
- Mootools元素>对象# & lt; HTMLDivElement>没有方法'addEvent'
- Quirks中的DispHTMLDivElement现在是IE9中的HTMLDivElement,方法Transform
- 对象# & lt; HTMLDivElement>没有方法'remove'
- “[对象HTMLDivElement]“;不返回变量
- Jquery元素没有重新绑定+ HTMLDivElement无法识别的表达式
- HtmlDivElement没有'indexOf'方法