Javascript 中意外触发更改事件

Unexpected firing of change event in Javascript

我正在使用 url 参数来告诉后端如何对页面上的多个列表进行排序。参数是根据每个列表的 select 块设置的(sortBy,orderBy)。在页面加载时,我正在设置 selects 以匹配参数。

function setSortOptions()
{
    var select = document.getElementsByTagName("select"),
        qParams = getParameters();

    for (var i=0, l = select.length; i < l; i++)
    {
        var self = select[i],
            name = self.name,
            value = qParams[name],
            opt = self.options[value];

        if(opt) opt.selected = true;

        select[i].addEventListener("change", SortMyLists(event), false);
    }
}

使用我当前的函数,事件侦听器会立即触发 SortMyLists。当我在分配事件侦听器之前更改 selected 选项时,为什么会这样?

不执行函数。只需传递对它的引用:

select[i].addEventListener("change", SortMyLists`, false);