Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 出于某种原因,document.getElementById().innerHTML无法工作?_Javascript_Php_Html - Fatal编程技术网

Javascript 出于某种原因,document.getElementById().innerHTML无法工作?

Javascript 出于某种原因,document.getElementById().innerHTML无法工作?,javascript,php,html,Javascript,Php,Html,我有一个具有相同值的跨度 echo "<span id='msgNotif1' class='badge' style='position:relative;right:5px;bottom:10px;'>".$number."</span>"; 问题是这个值仍然存在并且没有改变, 尝试取消对第一个警报的注释会显示一个具有正确值的警报,但当我尝试对其进行注释时,第二个警报从未执行,这让我意识到document.getelementbyid().innerhtml是一

我有一个具有相同值的跨度

echo "<span id='msgNotif1' class='badge'  style='position:relative;right:5px;bottom:10px;'>".$number."</span>"; 
问题是这个值仍然存在并且没有改变, 尝试取消对第一个警报的注释会显示一个具有正确值的警报,但当我尝试对其进行注释时,第二个警报从未执行,这让我意识到document.getelementbyid().innerhtml是一个不起作用的警报,已经使用了几个小时, 任何帮助都将不胜感激。
提前感谢

您的错误消息
无法将属性'innerHTML'设置为null“
表示:

document.getElementById("msgNotif1")
正在返回
null
。这可能是由于以下几个原因造成的:

  • 页面中没有具有
    id=“msgNotif1”
    的元素
  • 您在文档完成加载之前调用此代码,因此使用
    id=“msgNotif1”调用元素“
    尚未加载。如果您在文档的
    部分执行代码,而不是在
    的末尾或响应
    DOMContentLoaded
    事件,则通常会发生这种情况
  • 您的内容是动态加载的(不是在原始页面HTML中),在加载动态内容之前,您正在调用
    document.getElementById(“msgNotif1”)
  • 您有一些HTML错误,这些错误阻止正确解析包含
    id=“msgNotif1”
    元素的HTML

  • 有关如何在加载当前页面后不使用jQuery之类的框架运行Javascript的一般说明,请参见以下回答:

    您的错误消息
    无法将属性“innerHTML”设置为null“
    表示:

    document.getElementById("msgNotif1")
    
    正在返回
    null
    。这可能是由于以下几个原因造成的:

  • 页面中没有具有
    id=“msgNotif1”
    的元素
  • 您在文档完成加载之前调用此代码,因此使用
    id=“msgNotif1”调用元素“
    尚未加载。如果您在文档的
    部分执行代码,而不是在
    的末尾或响应
    DOMContentLoaded
    事件,则通常会发生这种情况
  • 您的内容是动态加载的(不是在原始页面HTML中),在加载动态内容之前,您正在调用
    document.getElementById(“msgNotif1”)
  • 您有一些HTML错误,这些错误阻止正确解析包含
    id=“msgNotif1”
    元素的HTML

  • 有关如何在加载当前页面后不使用jQuery之类的框架运行Javascript的一般说明,请参见以下回答:

    您的错误消息
    无法将属性“innerHTML”设置为null“
    表示:

    document.getElementById("msgNotif1")
    
    正在返回
    null
    。这可能是由于以下几个原因造成的:

  • 页面中没有具有
    id=“msgNotif1”
    的元素
  • 您在文档完成加载之前调用此代码,因此使用
    id=“msgNotif1”调用元素“
    尚未加载。如果您在文档的
    部分执行代码,而不是在
    的末尾或响应
    DOMContentLoaded
    事件,则通常会发生这种情况
  • 您的内容是动态加载的(不是在原始页面HTML中),在加载动态内容之前,您正在调用
    document.getElementById(“msgNotif1”)
  • 您有一些HTML错误,这些错误阻止正确解析包含
    id=“msgNotif1”
    元素的HTML

  • 有关如何在加载当前页面后不使用jQuery之类的框架运行Javascript的一般说明,请参见以下回答:

    您的错误消息
    无法将属性“innerHTML”设置为null“
    表示:

    document.getElementById("msgNotif1")
    
    正在返回
    null
    。这可能是由于以下几个原因造成的:

  • 页面中没有具有
    id=“msgNotif1”
    的元素
  • 您在文档完成加载之前调用此代码,因此使用
    id=“msgNotif1”调用元素“
    尚未加载。如果您在文档的
    部分执行代码,而不是在
    的末尾或响应
    DOMContentLoaded
    事件,则通常会发生这种情况
  • 您的内容是动态加载的(不是在原始页面HTML中),在加载动态内容之前,您正在调用
    document.getElementById(“msgNotif1”)
  • 您有一些HTML错误,这些错误阻止正确解析包含
    id=“msgNotif1”
    元素的HTML

  • 有关在加载当前页面后如何在不使用jQuery之类的框架的情况下运行Javascript的一般说明,请参见以下回答:

    您在控制台中收到此错误,因为它在脚本运行时不存在。如果脚本运行时未加载元素、ID不相同或html中不存在元素,则可能会导致此问题。如果在加载元素之前引用该元素,请添加一个在页面加载时执行的函数

    您可以使用JQuery

    $(document).ready(function(){
        var xmlhttp = new XMLHttpRequest();
           xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    var val = xmlhttp.responseText;
                    //alert(val);
                    document.getElementById("msgNotif1").innerHTML = val;
                    //document.getElementById("msgNotif2").innerHTML = val;
                    alert(val);
                    //document.getElementById("msgNotif3").innerHTML = xmlhttp.responseText;    
                }
            }
            xmlhttp.open("GET", "some page", true);
            xmlhttp.send();
    });
    
    或者使用纯Javascript创建事件

    window.onload = function(){
        var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    var val = xmlhttp.responseText;
                    //alert(val);
                    document.getElementById("msgNotif1").innerHTML = val;
                    //document.getElementById("msgNotif2").innerHTML = val;
                    alert(val);
                    //document.getElementById("msgNotif3").innerHTML = xmlhttp.responseText;    
                }
            }
            xmlhttp.open("GET", "some page", true);
            xmlhttp.send();
    };
    

    有效的观点是,使用纯Javascript执行Ajax请求比使用JQuery需要更多的代码。这就是为什么我(和其他许多人)对所有执行的Ajax请求都使用JQuery的原因。JQuery有许多用于Ajax的方法,这些方法将节省大量时间和代码,从长远来看,会将文件大小减少几个字节,因为使用JQuery,代码会被重用。

    您在控制台中收到此错误,因为在脚本运行时它不存在。如果脚本运行时未加载元素、ID不相同或元素