3 回答
TA贡献1859条经验 获得超6个赞
为什么onclick事件能正确获取到我点的是数组哪个元素,还有下标。(tab,tabPos)
因为一开始就已经通过循环把 元素 和 下标 传递给 setHandler
了。
for循环至setTabHandler(tab, i),执行函数 循环调用3次该函数,它不是直接循环完了吗?
每循环一次就给对应下标的元素注册监听函数,然后就结束了这没错。
这段javascript代码应该不是从我点击开始onclick事件才执行的吧?
只有 tab.onclick = function () { ... }
这一段是你点击后才执行的,其他的都是页面一加载完就执行了。
TA贡献1827条经验 获得超4个赞
为什么onclick事件能正确获取到我点的是数组哪个元素,还有下标。(tab,tabPos)
这牵涉到执行顺序,因变数在一开始就给值,所以下方已经注册 tabs, panels
for循环至setTabHandler(tab, i),执行函数 循环调用3次该函数,它不是直接循环完了吗?
确实循环完了,但因 setTabHandler 中注册了 onclick 事件,所以后续 tab 被点击时会触发已被注册的 onclick 事件
这段javascript代码应该不是从我点击开始onclick事件才执行的吧?
setTabHandler 在程式第一次执行时就被呼叫,后续点击时触发的是
function() {
alert(tabPos);
for(i = 0; i < tabs.length; i++) {
if(tabs[i].getAttribute('class')) {
tabs[i].removeAttribute('class');
}
}
tab.setAttribute('class', 'demo');
for(i = 0; i < panels.length; i++) {
if(panels[i].getAttribute('class')) {
panels[i].removeAttribute('class');
}
}
panels[tabPos].setAttribute('class', 'active-panel');
}
这段程式码
添加回答
举报