当前位置: 首页 > 知识库问答 >
问题:

文件在函数调用中编写和调用innerHTML

齐弘业
2023-03-14

我是javascript的新手,我想知道为什么在这个脚本中,document.write工作得很好,而innerHTML却不行(我在正文中给出了一个div id计时器)。是innerHTML需要在html的正文部分加载事件吗?如果是,为什么?(我在html文档的头部分调用函数Writehere()

<script language="javascript">

 function writehere()

 {
       document.write("hello");

       var Timer = document.getElementById("timer");

        Timer.innerHTML = "hello";


}

writehere();

</script>

html代码在这里。。。。。

共有3个答案

严正诚
2023-03-14

这都是关于HTML标记元素和执行时间的。在您的示例中,脚本位于head标记中,因此在执行脚本时,元素div#timer根本不存在。

那么你有2个解决方案

  • 将脚本移动到页面末尾(标记之前),

如果您的DOM并不复杂,并且不包含img标记或需要从网络中获取的任何类型的元素,则不需要使用onload。您可以在两种情况下使用它:

  • 您必须等待加载所有元素,如图像、视频等。

一般来说,将脚本标记放在文档的末尾是否被认为是一种良好的实践(因此您不需要使用onload),它可以防止非样式内容(FOUC)的闪存。Javascript阻止你的浏览器渲染引擎。因此,如果JavaScript标签是在内容对用户可用之前放置的(阅读:在头标签中),浏览器将执行它,DOM几乎是空的,用户在执行期间只会看到一个空白页面。

另外,关于jQuery。fn。就绪方法,您必须注意以下几点:

$(document).ready(function() {
    // my first useless function
    console.log( "first", 1 );
});

$(document).ready(function() {
    // my second useless function
    // this function will throw an (intentional) error
    console.log( "second", someUndefinedVariable );
});

$(document).ready(function() {
    // my third useless function
    // because the previous function contains an error
    // this function will never be called
    console.log( "third ", 3 );
});

假设你正在使用一些插件,你有一些手写的代码等等。如果每个插件和代码都在使用jQuery。fn。ready方法,并且如果由于某种原因(比如在某些情况下的特定浏览器版本中)某个函数抛出错误,那么该函数之后的所有处理程序将永远不会运行。。。

而且,这样做,你会在最后延迟所有“真正的”JavaScript执行,如果你有很多方法要在队列中运行,那么你可能会在几秒钟内阻塞浏览器,用户会通知它。

邵献
2023-03-14

我想你的问题是DOM还没有加载,所以没有id="Timer"的div元素。您应该在onLoad事件中调用此方法。

伍弘盛
2023-03-14

最可能的问题是,在代码执行时DOM还没有准备好。对于您的示例,您可能只需将其向下移动到页面底部即可。

通常,您希望在执行需要与DOM交互的javascript之前确保DOM已完全加载,例如,如果使用jQuery,您可以在document ready函数中调用代码以确保加载DOM

   $(document).ready({

    });

请看一看这个关于香草javascript等价物的SO问题

什么是非jQuery等效的$(文档)。准备()?

 类似资料:
  • 问题内容: 当在html页面中单击某个链接时,是否可以调用python函数? 谢谢 问题答案: 您将需要使用Web框架将请求路由到Python,因为您不能仅使用HTML来做到这一点。Flask是一个简单的框架: server.py : templates / template.html : 使用运行它,然后导航到http:// localhost:5000 / 。开发服务器不安全,因此要部署您的应

  • 问题内容: 说,我想在gcc的内联汇编中调用具有以下签名的函数。我怎样才能做到这一点? 问题答案: 通常,您会想要做类似的事情 也就是说,您根本不需要在嵌入式asm中进行函数调用。这样,您不必担心调用约定或堆栈框架管理的细节。

  • 问题内容: 我想调用一个在second.js文件的first.js文件中定义的函数。这两个文件都在HTML文件中定义,例如: 我想打电话给在定义中。根据我的搜索结果,答案是首先定义是否可以,但是根据我的测试,我没有找到任何方法。 这是我的代码: 问题答案: 除非在同一文件中定义了该函数,或者在尝试调用该函数之前已加载了该函数,否则无法调用该函数。 除非函数的范围与尝试调用该函数的范围相同或更大,否

  • 问题内容: 我们可以在另一个JS文件中调用在一个JS文件中编写的函数吗?谁能帮我从另一个JS文件中调用该函数? 问题答案: 只要在第一次使用该功能之前就已加载了包含该功能定义的文件,就可以像在同一JS文件中那样调用该功能。 即 File1.js File2.js HTML HTML 什么将不起作用将是: HTML 尽管在调用它时已定义,但它在内部使用仍未定义的函数()。

  • 问题内容: 是否可以从Go调用静态对象(.so)文件?我一直在搜寻Google,我不断提出我可以做到的主张 但是尝试这样做会出现错误 并搜索Godocs,但在syscall包中找不到对此功能的引用。是否可以加载库并调用其函数? 问题答案: 在POSIX平台上,您可以用来调用dlopen和朋友:

  • 将函数调用根据其JSON接口对象和给定的参数进行ABI编码。 调用: web3.eth.abi.encodeFunctionCall(jsonInterface, parameters); 参数: jsonInterface - Object: 函数的JSON接口对象 parameters - Array: 参数值数组 返回值: String - ABI编码结果,包含函数签名和参数 示例代码:

  • 问题内容: 我在AutoIt网站上找不到COM版本。隐藏在某个地方吗?我怎么才能得到它? 问题答案: 在Python中使用AutoIt的方法有两种: pyautoit模块 适用于Windows扩展的python(pywin32) pyautoit模块将使用DLL,而pywin32我们可以使用COM。据我所知,两者之间在功能上没有区别。 先决条件 python的安装。 AutoIt的安装。 pyau

  • 问题内容: 我想知道是否有可能仅在条件为真时在javascript中调用php函数。例如 有没有这样做的方法。如果是这样,请告诉我。谢谢 问题答案: 不能以上面说明的方式调用PHP函数。但是,您可以使用AJAX调用PHP脚本,代码如下所示。您也可以在这里找到一个简单的示例。让我知道您是否需要进一步澄清 使用jQuery 准系统Javascript替代