javascript onload函数起作用,onresize不起作用

javascript onload函数起作用,onresize不起作用,javascript,onload,Javascript,Onload,我在页眉中有一个函数来调整iframe的大小,我在页脚中调用它,用于窗口.onload和窗口.onresize var resize = function(elementId) { document.getElementById(elementId).height = parseInt(document.getElementById(elementId).offsetWidth)*0.63; }; onload工作: window.onload = resize("yo

我在页眉中有一个函数来调整
iframe
的大小,我在页脚中调用它,用于
窗口.onload
窗口.onresize

var resize = function(elementId) {
        document.getElementById(elementId).height = parseInt(document.getElementById(elementId).offsetWidth)*0.63;
    };
onload
工作:

window.onload = resize("youtube");
onresize
不会:

window.onresize = resize("youtube")

如果我的javascript有任何问题,请原谅我。我对它还是有点陌生。

您现在正在执行函数,而不是返回函数

因此,如果您记录
window.onload
包含的内容,它将包含
undefined

您需要返回一个函数(也可能需要缓存元素,就像我所做的那样):

上述功能仍然允许您执行:

window.onload = resize("youtube");
由于
resize
现在返回一个回调
窗口。onload
(理论上)现在与:

window.onload = function(){
    var element = document.getElementById("youtube");
    element.height = parseInt(element.offsetWidth) * 0.63;
};

您正在立即执行函数,而不是返回函数

因此,如果您记录
window.onload
包含的内容,它将包含
undefined

您需要返回一个函数(也可能需要缓存元素,就像我所做的那样):

上述功能仍然允许您执行:

window.onload = resize("youtube");
由于
resize
现在返回一个回调
窗口。onload
(理论上)现在与:

window.onload = function(){
    var element = document.getElementById("youtube");
    element.height = parseInt(element.offsetWidth) * 0.63;
};

window.onresize
(以及
window.onload
)应该是函数引用

window.onresize = function () {
  resize('youtube')
}

您的实现将执行函数,并将返回值分配给
窗口
属性

window.onresize
(以及
window.onload
)应该是函数引用

window.onresize = function () {
  resize('youtube')
}


您的实现将执行函数,并将返回值分配给
窗口
属性

所以应该
window.onload
@qwertynl是的,当然可以。这很好用!非常感谢。然而,我很好奇为什么当我不打电话给function@mr.musicman函数立即被调用。窗口可能已经加载,函数运行了两次。当它到达那一行时,它正在调用函数(这可能是窗口加载的时候)。因此应该
window.onload
@qwertynl肯定是的。这非常有效!非常感谢。然而,我很好奇为什么当我不打电话给function@mr.musicman函数立即被调用。窗口可能已经加载,函数运行了两次。当它到达那一行时,它正在调用函数(无论如何,这可能是窗口加载的时候)。我没有否决答案,我认为这很好。但是当我在页眉javascript中实现更改时(保持页脚函数不变),
onresize
可以正常工作,但是
onload
不能。@musicman先生两人都没有做任何事情。您的功能刚刚立即运行。它与加载无关,您的元素恰好在函数运行两次时加载。@mr.musicman您不能有多个
窗口。onload
s,您可以使用
addEventListener
或将所有元素放在一个函数中。@qwertynl您被否决,因为我想有些人不太理解闭包。@mr.musicman这是一个游戏,您必须学会如何玩:P欢迎!祝你在这里过得愉快(哦,只需发布新问题,然后跳到JS聊天室,我们可以在那里帮助你:)我没有否决答案,我认为这很好。但是当我在页眉javascript中实现更改时(保持页脚函数不变),
onresize
可以正常工作,但是
onload
不能。@musicman先生两人都没有做任何事情。您的功能刚刚立即运行。它与加载无关,您的元素恰好在函数运行两次时加载。@mr.musicman您不能有多个
窗口。onload
s,您可以使用
addEventListener
或将所有元素放在一个函数中。@qwertynl您被否决,因为我想有些人不太理解闭包。@mr.musicman这是一个游戏,您必须学会如何玩:P欢迎!祝您在这里过得愉快(哦,只需发布新问题,然后跳到JS聊天室,我们可以在那里帮助您:)Downvoter:这个问题怎么了?Downvoter:这个问题怎么了?