javascript - 如何交换两个 DOM 对象?
PHP中文网
PHP中文网 2017-04-10 14:44:08
[JavaScript讨论组]

比如这样的 DOM 结构:

<p id="a1"></p>
<p id="a2"></p>

我之前想的是这样交换:

var ps = document.querySelectorAll("p");
var temp;

temp = ps[0];
ps[0] = ps[1];
ps[1] = temp;

但是我却发现,即使在执行 ps[0] = ps[1] 这条语句后,p[0] 依然是原来的那个对象,并没有将 p[1] 的对象赋值给 p[0],请问这是为什么呢?如果要交换两个 DOM 对象,请问要怎么实现?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
ringa_lee

http://stackoverflow.com/questions/2943140/how-to-swap-html-elements-in-javascript

阿神

因为ps是nodeList而不是array;而nodeList是只读的,反映的是文档节点的实时结构;

console.log(ps instanceof Array);; //false
console.log(ps instanceof NodeList);//true

要想把nodeList像数组一样操作,得先把ps转换为array;

var psArray = Array.prototype.slice.call(ps,0);

然后,交换“位置”,注意,这只是交换两个节点对象在数组中的位置,而不是在DOM中的位置;

console.log("before:",psArray);//[p#test, p#test2] 
var temp = psArray[0];
psArray[0] = psArray[1];
psArray[1] = temp;
console.log("after:",psArray);//[p#test2, p#test] 
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号