把问题描述清楚。alert( "childNode:" + o.childNodes[ 0 ].outerHTML );
^
你的目的是循环childNodes还是一直打印childNodes[0]
^
你的目的是循环childNodes还是一直打印childNodes[0]
解决方案 »
- 请大侠帮忙简化一下js代码,自己写的代码太臃肿了。
- js 如何判断 页面有click事件
- 问大家一个EXTJS的问题
- javascript函数式编程
- 有关数组赋值的问题
- var response = AjaxBLLClass.GetProductInfo(productname.value)取不出数据----在线急等
- 请问如何让类似 “2/(1-1/3)”这样的表达式得到精确的值?结果应该是3,但javascript中得到的是2.99...5
- 如何使用focus()?
- 为什么这段代码在ie5下传不过去值呢?而在ie6确可以。
- 在window.open打开一个新窗口时,如何在新窗口中取得打开前窗口的input框的值
- 关于获取同名checkbox的值的传递?
- 紧急的问题!谢谢大家.
for( var i = 0; i < o.childNodes.length; i ++ ){
// 按常规思考,这样就循环把o的子节点添加到n
// 但这个方法是错误的
n.appendChild( o.childNodes[ i ] );
}下面这样是可以的:
for( var i = o.childNodes.length; i > 0; i -- ){
n.appendChild( o.childNodes[ 0 ] );
}
但,这个我不解:
o.childNodes会自动删除吗?
1、每o.childNodes[ 0 ] 一次就删除自身吗?
2、还是被appendChild,就会删除自身?
3、alert( o.childNodes[ 0 ].outerHTML ),是undefined,那么它是什么,为什么会有这个数组?
// 按常规思考,这样就循环把o的子节点添加到n
// 但这个方法是错误的
n.appendChild( o.childNodes[ i ] );
}这种方法是错误的,
并且o下面的子节点会自动消失。
1、每o.childNodes[ 0 ] 一次就删除自身吗?
a:你没删除,一般情况下,不会被收集回去的。2、还是被appendChild,就会删除自身?
a:也不会3、alert( o.childNodes[ 0 ].outerHTML ),是undefined,那么它是什么,为什么会有这个数组?
a:1.有可能这个节点是空节点,即空白节点,
为什么会有这个数组?
------------------
指o.childNodes[ 0 ].outerHTML这个?这个是集合,为子节点集合中的第一个孩子。
n.appendChild( o.childNodes[ 0 ] );
}
奇怪的是这个,o.childNodes[ 0 ] 为什么每循环一次就不一样?会自动移动类似的“指针”玩意吗?
3、alert( o.childNodes[ 0 ].outerHTML ),是undefined,那么它是什么,为什么会有这个数组?这个明白了。可能空节点的原因。
n.appendChild( o.childNodes[ 0 ] );
}
奇怪的是这个,o.childNodes[ 0 ] 为什么每循环一次就不一样?会自动移动类似的“指针”玩意吗?o.childNodes[ 0 ] 为什么每循环一次就不一样?你怎么知道不一样?
for( var i = o.childNodes.length; i > 0; i -- ){
alert(o.childNodes[0].innerHTML) //你看看他变了没有,你要调试呀n.appendChild( o.childNodes[ 0 ] );
}
<div id="t1">11111111111111
<div id="t2">2222222222</div>
</div>
<script language="javascript">
var o = document.getElementById( 't1' );
var t = document.createElement( 'DIV' );
for( var i = o.childNodes.length; i > 0; i -- ){
t.appendChild( o.childNodes[ 0 ] );
}
alert( "t:" + t.outerHTML );
alert( "t1:" + t1.innerHTML ); //这就变空了????
</script>
但这就是我的调试:
n.appendChild( o.childNodes[ 0 ] );每次appenChild 都能添加不同的元素,o.childNodes[ 0 ]当然是不同的了。
o.childNodes[ 0 ].outerHTML,我也试过了。
alert( "t1:" + document.getElementById( 't1' ).innerHTML ); //看看这个
//你先把基本的逻辑搞清楚
//var t = document.createElement( 'DIV' );只是创建,你没给他放到heml里面去
非常感谢你的指点,但你的回答和我题目的本义基本不同。<div id="t1">11111111111111
<div id="t2">2222222222</div>
</div>
alert( "t1:" + t1.innerHTML );
这个就是t1,正确的写当然是:document.getElementById( 't1' ).innerHTML
但结果是是一样的。>>
//你先把基本的逻辑搞清楚
//var t = document.createElement( 'DIV' );只是创建,你没给他放到heml里面去和这个是无关的。我要解决的是:
t.appendChild( o.childNodes[ 0 ] );
为什么会使:
<div id="t1">11111111111111
<div id="t2">2222222222</div>
</div>
里的:
11111111111111
<div id="t2">2222222222</div>
变没了?我要了解和探讨的是这个为什么?不是学习语法。
o.childNodes[0]在o子对象中只有一份实体,
t.appendChild只是把实体的引用(就是你说的指针)转移到t的子对象中我试过IE的结果就是把o中的childNode移到t中