【问题标题】:window.onload not working while body onload workswindow.onload 不工作,而 body onload 工作
【发布时间】:2017-01-20 09:05:37
【问题描述】:

这是我在这里的第一个问题,但我希望我能准确并提供所有必要的信息。我需要使用 window.onload 在我的 html 代码头部编写一个页面,其中 type="text/view" 来显示。

当我将此代码放入正文并使用时

<body onload="loadWelcomePage()">

    function loadWelcomePage() {
        var welcomePageContent = document.getElementById('welcomeview');
        var profilePageContent = document.getElementById('profileview');
        var showPage = document.getElementById('contentSpace');

        showPage.innerHTML = welcomePageContent.innerHTML;

    }

但是,当我将相同的代码复制到 js 文件时,不会加载相同的函数。我究竟做错了什么。我将在下面使用的 js 文件中发布替换代码。

window.onload = function() {displayView};

function displayView() {
   var welcomePageContent = document.getElementById('welcomeview');
   var profilePageContent = document.getElementById('profileview');
   var showPage = document.getElementById('contentSpace');

   showPage.innerHTML = welcomePageContent.innerHTML;
} 

我需要使用 javascript 而不是 jQuery 来完成任务。

【问题讨论】:

  • 改用document.onload = function(){}怎么样?
  • window.onload = displayView 没有括号。以前从未见过type="text/view" ...Niether 有 Google...
  • type="text/view" 用于防止浏览器呈现代码,直到我使用上述代码将其分配给 div。

标签: javascript html


【解决方案1】:
function() {displayView};

仅仅提及一个变量并没有任何作用。

如果你想调用一个函数,那么你必须调用它(例如使用())。

function() {displayView(); };

你也可以绕过创建一个除了调用另一个函数之外什么都不做的函数:

window.onload = displayView;

(请注意,当事件触发时浏览器会调用该函数,在这种情况下您不会自己调用它,因此应该省略(),否则您会立即调用它并且将返回值分配给onload。)

【讨论】:

  • 我已经尝试过编写它以及 displayView() 但与正文 onload 函数相比页面仍然是空的:/
  • @LuckAss 您可以在问题中包含 MVCE 的任何机会,因为 Quentin 的建议正是您所需要的(除非有一些隐藏的因素,您可能会在控制台中遇到错误,从而导致您网站是空的,但如果没有MVCE,这很难检查)
  • 非常感谢,它现在工作了,我还删除了你提到的冗余功能。第一次不起作用的原因是我的 .js 导入中缺少 "。所以你的答案是正确的。:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
相关资源
最近更新 更多