javascript - 解释 document.getelementbyid.innerhtml 如何打印文本

标签 javascript html file-io

根据其他文档,我已成功打印出一个以行分隔的文本文件。

<!DOCTYPE html>
<html>
<head>
<script>
function readFile()
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
     }

     xmlhttp.onreadystatechange=function()
     {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
             document.getElementById("myDiv").innerHTML=xmlhttp.responseText.split("\n");
        }
     }

     xmlhttp.open("GET","OFCaddresses.txt",true);
     xmlhttp.send();
 }
 </script>
 </head>
 <body>

 <div id="myDiv"><h2>"FILE.txt"</h2></div>
 <button type="button" onclick="readFile()">FILE</button>

 </body>
 </html>

如果有人可以解释的话,我试图更好地理解这是如何工作的。我了解他们如何根据浏览器定义 xmlhttp,但是什么是

document.getElementById("myDiv").innerHTML=xmlhttp.responseText.split("\n");

实际上呢?它是否将 myDiv 的内容从文本更改为文件内容? onreadystatechange 与按钮有什么关系?

最佳答案

看来您需要更多地了解 javascript 的作用及其工作原理。

xmlhttp.onreadystatechange=function()正在将一个函数分配给xmlhttpreadystate 时将执行的对象变化。这意味着作为 xmlhttp对象经历了请求数据的各个阶段,它会多次执行此函数。

在该函数中,您有一个检查:if (xmlhttp.readyState==4 && xmlhttp.status==200)

这表示如果就绪状态为 4(完整 - 有关就绪状态的更多信息,请参阅 here),则继续执行 {} 内的所有内容 block 。

最后,你得到了这段代码

document.getElementById("myDiv").innerHTML=xmlhttp.responseText.split("\n");

这是使用 document保存页面上所有 html 的对象。 getElementById方法在 html 对象中搜索具有给定 id 的项目。您已获得以下 html

<div id="myDiv"><h2>"FILE.txt"</h2></div>

所以document.getElementById("myDiv")找到这个div。 innerHTML属性返回该 div 的 html,当前是您的 <h2> header 。

xmlhttp.responseText.split("\n");从您的 xmlhttp 获取响应对象并通过换行将其拆分为数组并将其设置为新值 innerHTML目的。当数组在 html 中打印时,它是用逗号分隔的。

希望这能让您更好地理解。但这些都是非常基本的 JavaScript 命令,因此您还有很多东西需要学习。

关于javascript - 解释 document.getelementbyid.innerhtml 如何打印文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24622548/

相关文章:

javascript - 在 Parse Cloud Code 中将数据附加到数组

html - 确保我的缩略图描述始终与缩略图的中间对齐?

c++ - 在不同的 C++ 编译器中读取文件

visual-studio - MS Visual Studio如何确定源文件已更改?

javascript - 如何使用以前的跨度顶部和左侧位置来放置其他跨度,以免它们相互重叠?

javascript - 在幻灯片中使用 StopInterval()

javascript - Bootstrap Modal-Manager 禁用溢出

javascript - 使用 Shift + Tab 为父项时运行 JS

html - 仅在 IE7 中无法在 anchor 内单击图像

C 向/从磁盘写入/读取内存快照