Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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抛出TypeError,表示我的变量未定义_Javascript_Html_Typeerror - Fatal编程技术网

JavaScript抛出TypeError,表示我的变量未定义

JavaScript抛出TypeError,表示我的变量未定义,javascript,html,typeerror,Javascript,Html,Typeerror,我在JavaScript方面没有太多经验,到目前为止我有以下几点: function loop() { var authorDivs = document.getElementById('ctl00_MainContent_MCPObjectInfo_dvCreatorView').getElementsByTagName("div"); for (var i = 0; i < authorDivs.length; i++) { var divOfDi

我在JavaScript方面没有太多经验,到目前为止我有以下几点:

  function loop() {
    var authorDivs = document.getElementById('ctl00_MainContent_MCPObjectInfo_dvCreatorView').getElementsByTagName("div");

    for (var i = 0; i < authorDivs.length; i++) {
        var divOfDiv = authorDivs[i].getElementsByTagName("div");

        if (typeof divOfDiv.item(i) === 'undefined' || divOfDiv.item(i) === null) {
            console.log("This is undefined or null");
        }
        else {
            var realDivs = divOfDiv.item(i);
            realDivs.item(i).textContent = "please work plz";
        }
    }
}
函数循环(){
var authorDivs=document.getElementById('ctl00_main content_mcobjectinfo_dvCreatorView')。getElementsByTagName(“div”);
对于(var i=0;i
我从FireFox的控制台中得到以下错误:
TypeError:realDivs在这一行未定义:
realDivs.item(I).innerHTML=“请工作plz”

本质上,我(在我的脑海中)拥有的是一个循环,它通过
authorDivs
获取这些
div
中的所有
div
,并将它们保存在
divOfDiv
中。然后检查
divOfDiv
中的
div
是否
未定义
null
,如果它们不是,那么这些
div
将保存在变量
realDivs
中,然后我使用该变量编辑内部HTML。这是我理想中希望看到的情况,是什么导致了错误?我做错了什么

注意:我不能访问jQuery,只能访问JavaScript

编辑:我已经添加了下面建议的更改,并且已经修复了--谢谢!但是我现在得到了以下错误:
TypeError:realDivs.item不是一个函数


是什么原因造成的?另一方面,我如何知道何时处理数组以及何时处理HTMLCollection?你只是假设吗?我以前从未使用过松散类型的语言,所以对我来说是新的

如果(divOfDiv.item(i)===“未定义”| | null')
返回true时,会发生这种情况。然后您永远不会初始化
realDivs
(如果条件为falsy,会发生什么情况)。稍后,您尝试调用该单元化对象上的
item
函数

如果(typeof divOfDiv.item(i)=='undefined'| |'null')
返回true时,就会发生这种情况。然后您永远不会初始化
realDivs
(如果条件为falsy,会发生什么情况)。稍后您尝试调用统一化对象上的
item
函数

那么,您需要将该代码移动到应该阻止它的条件块中!另外,
| |“null”
不会像您预期的那样工作,您需要明确检查
| | divOfDiv.item(i)==null

所以试试看

for (var i = 0; i < authorDivs.length; i++) {
    var divOfDiv = authorDivs[i].getElementsByTagName("div");

    if (divOfDiv.item(i) == null) {
        console.log("This is undefined or null");
    } else {
        var realDivs = divOfDiv.item(i)
        realDivs.item(i).innerHTML = "please work plz";
        console.log(divOfDiv.item(i));
    }
}

那么,您需要将代码移动到应该阻止它的条件块中!另外,
| |“null”
不会像您预期的那样工作,您需要明确检查
| | divOfDiv.item(i)==null

所以试试看

for (var i = 0; i < authorDivs.length; i++) {
    var divOfDiv = authorDivs[i].getElementsByTagName("div");

    if (divOfDiv.item(i) == null) {
        console.log("This is undefined or null");
    } else {
        var realDivs = divOfDiv.item(i)
        realDivs.item(i).innerHTML = "please work plz";
        console.log(divOfDiv.item(i));
    }
}

代码中有两个问题

  • 将DOM对象与“未定义”和null进行比较。如果div标记在authorDivs[i]中不可用,它将返回空DOM数组。所以,将空DOM数组与未定义和null进行比较并不是一个好的方法。我们可以使用数组长度属性进行验证

    divOfDiv=authorDivs[i].getElementsByTagName(“div”)
    如果(divOfDiv.length>0){console语句}

  • 由于项(i)已经返回单个DOM元素,“realDivs”变量的项(i)不是正确的方法。除此之外,在验证realDivs是否包含DOM元素之后,还需要使用innerHTML方法。请按以下方式更新代码

    var realDivs=第(i)项的divOfDiv; realDivs?(realDivs.innerHTML=“请工作”):null


  • 注意:如果DOM不可用,项(i)将返回null。

    代码中有两个问题

  • 将DOM对象与“未定义”和null进行比较。如果div标记在authorDivs[i]中不可用,它将返回空DOM数组。所以,将空DOM数组与未定义和null进行比较并不是一个好的方法。我们可以使用数组长度属性进行验证

    divOfDiv=authorDivs[i].getElementsByTagName(“div”)
    如果(divOfDiv.length>0){console语句}

  • 由于项(i)已经返回单个DOM元素,“realDivs”变量的项(i)不是正确的方法。除此之外,在验证realDivs是否包含DOM元素之后,还需要使用innerHTML方法。请按以下方式更新代码

    var realDivs=第(i)项的divOfDiv; realDivs?(realDivs.innerHTML=“请工作”):null


  • 注意:如果DOM不可用,项(i)将返回null。

    您仅在
    else
    子句中分配
    realDivs
    ,然后在
    if
    之外使用它。您希望得到什么?在代码执行和检查变量和对象时,一次调试一行代码并逐步完成它。这就是你发现问题的方法。
    | |“null”
    是非常错误的。好吧,我已经添加了这些更改,就像我说的,我是非常新的。。。尽我最大的努力。我已经逐行检查了代码,但是当您不一定知道什么是对的时,很难找出错误。您只在
    else
    子句中分配
    realDivs
    ,然后在
    if
    之外使用它。您希望得到什么?在代码执行和检查变量和对象时,一次调试一行代码并逐步完成它。这就是你发现问题的方法。
    | |“null”
    是非常错误的。好吧,我已经添加了这些更改,就像我说的,我是非常新的。。。尽我最大的努力。我已经一行一行地浏览了代码,但是当你不一定知道什么是对的时候,很难找出什么是错的。