我的简化代码应向导航中的每个b元素添加一个EventListener,如下所示:



function openSubNavs2()
{
	var allToggleBs = document.querySelector('ul#nav').getElementsByTagName('b');
	for (var i=0; i<allToggleBs.length; i++)
	{
		var toggleB = allToggleBs[i];
		toggleB.addEventListener('click', function()
		{
			toggleB.className = 'show';
		});
	}
}
window.addEventListener('load', function() {openSubNavs2();});





但未创建EventListener'click'。

如果我将递增的allToggleBs [i]更改为静态allToggleBs [0],则单击时,第一个b元素将获得类“ show”-正如预期的那样。第二个b元素的allToggleBs [1]同样适用。

因此,基本上可以正确找到b元素,但是for循环不起作用,并且我找不到原因。

最佳答案

如果需要es3支持,也可以使用匿名函数:

function openSubNavs2()
{
    var allToggleBs = document.querySelector('ul#nav').getElementsByTagName('b');
    for (var i=0; i<allToggleBs.length; i++)
    {
        (function(toggleB) {
            toggleB.addEventListener('click', function() {
                toggleB.className = 'show';
            });
        })(allToggleBs[i]);
    }
}

09-16 04:26