用var定义的变量是函数范围内有效的,你的事件处理函数被执行时,闭包内的变量i等于lis.length,lis[i]等于undefined。
在for循环外把ul赋给一个变量,在事件处理函数里直接ul.insertBefore(e.target, ul.firstChild),应该就可以了。
或者更简单一点,把事件处理函数加在ul上。
var ul = document.querySelector('ul'); // 最好有个id
ul.addEventListener('click', function(e) {
if (e.target.nodeName === 'LI') {
ul.insertBefore(e.target, ul.firstChild);
e.stopPropagation();
}
}, false);
【 在 Splunk 的大作中提到: 】
: //实现功能:点击哪个 <li>就移动到第一个
: function setup() {
: var lis = document.querySelectorAll('ul li');
: ...................
--
修改:a9udn9u FROM 70.181.66.*
FROM 70.181.66.*