您的代码在页面加载时立即运行函数 newApptWin(infoGet),并且它永远不会改变。您应该将一个函数传递给 eventListener,而不是函数的结果(您已在此处完成)。你可以像这样修复它:
newAppt[i].addEventListener('click', function() {newApptWin(infoGet);}, false);
编辑(更新这是错误的):
在 for 循环中声明 infoGet。你的整个脚本:
window.onload = function () {
'use strict';
var i = 0, newAppt;
newAppt = document.getElementsByTagName('div');
for (i = 0; i < newAppt.length; i++) {
if (newAppt[i].getAttribute('title') !== '') {
var infoGet = newAppt[i].getAttribute('title');
newAppt[i].addEventListener('click', function() {newApptWin(infoGet);}, false);
}
}
};
function newApptWin(infoGet) {
'use strict';
window.open(infoGet,'test','toolbar=0');
}
或者您可以完全跳过 infoGet 并避免潜在的内存泄漏:
newAppt[i].addEventListener('click', function() {newApptWin(newAppt[i].getAttribute('title'));}, false);
编辑2:
window.onload = function () {
'use strict';
var i = 0, newAppt;
newAppt = document.getElementsByTagName('div');
for (i = 0; i < newAppt.length; i++) {
if (newAppt[i].getAttribute('title') !== '') {
var infoGet = newAppt[i].getAttribute('title');
newAppt[i].addEventListener('click', newApptWin, false);
}
}
};
function newApptWin() {
'use strict';
window.open(this.getAttribute('title'),'test','toolbar=0');
}