Javascript window.prompt定义的嵌套数组未使用.innerHTML更新视图

Javascript window.prompt定义的嵌套数组未使用.innerHTML更新视图,javascript,arrays,Javascript,Arrays,不熟悉JavaScript,想了解事件侦听器和window.prompts是如何工作的,所以我决定构建一些东西 在我说其他任何事情之前,我已经尝试创建一个新数组而不是嵌套数组,以确定这是否是问题所在。我还成功地记录了返回“undefined”的嵌套数组 在JS文件的第14行之后,myCompany[0][0]的第一个值是通过window定义的。prompt是代码停止运行的地方。这是控制台日志中关于第14行的内容 未捕获的TypeError:无法将属性“innerHTML”设置为null 在com

不熟悉JavaScript,想了解事件侦听器和window.prompts是如何工作的,所以我决定构建一些东西

在我说其他任何事情之前,我已经尝试创建一个新数组而不是嵌套数组,以确定这是否是问题所在。我还成功地记录了返回“undefined”的嵌套数组

在JS文件的第14行之后,myCompany[0][0]的第一个值是通过window定义的。prompt是代码停止运行的地方。这是控制台日志中关于第14行的内容

未捕获的TypeError:无法将属性“innerHTML”设置为null 在companyPush(scripts.js:13)

这里还有HTML和JS。没有CSS(我认为这并不重要)

我希望这是足够的信息

应该发生的是document.getElementById(“CompanyoneResponsibilityOne”)。innerHTML应该根据在window.prompt中键入的内容更新相关HTML

如果你需要更多信息,请告诉我

根据乔纳森的建议更改JS

    window.addEventListener("load", function companyPush() {

        // declare new variable = new array
        var myCompany = new Array;  
        myCompany[0] = new Array;
        // Window prompts fill array data
        document.getElementById("companyOne").innerHTML = myCompany[0][1] = window.prompt("Where is your most recent place of work?");
        document.getElementById("companyTwo").innerHTML = myCompany[0][2] = window.prompt("Where did you work before that?");
        document.getElementById("companyThree").innerHTML = myCompany[0][3] = window.prompt("And before that?");

        // declare nested array with 'oldArray["newArrayName"]'
        myCompany[1] = new Array;
        // Window prompts fill nested array data
        document.getElementById("companyOneResponsibilitiesOne").innerHTML = myCompany[1][0] = window.prompt("1");
        document.getElementById("companyOneResponsibilitiesTwo").innerHTML = myCompany[1][1] = window.prompt("2");
        document.getElementById("companyOneResponsibilitiesThree").innerHTML = myCompany[1][2] = window.prompt("3");

});

尝试为前3个提示提供另一个
数组
,以便每组提示都有自己的提示。您也可以考虑给每个集合自己的变量(<代码> SETONE ,<代码> SET2O<代码>,在此情况下),以便于引用。

var myCompany = new Array;             // parent array holding all sets
var setOne = myCompany[0] = new Array; // 1st set of prompts

document.getElementById("companyOne").innerHTML = setOne[0] = window.prompt("Where is your most recent place of work?");
document.getElementById("companyTwo").innerHTML = setOne[1] = window.prompt("Where did you work before that?");
// ...

var setTwo = myCompany[1] = new Array; // 2nd set of prompts

document.getElementById("companyOneResponsibilitiesOne").innerHTML = setTwo[0] = window.prompt("1");
document.getElementById("companyOneResponsibilitiesTwo").innerHTML = setTwo[1] = window.prompt("2");
// ...

目前,
myCompany[0]
正在被分配一个从
prompt()
返回的字符串值。字符串将自己的索引定义为对单个字符的引用

var myCompany = [ 'example' ];
console.log(myCompany[0][0]); // 'e'
console.log(myCompany[0][1]); // 'x'
console.log(myCompany[0][2]); // 'a'

// same as...
console.log(myCompany[0].charAt(0)); // 'e'
字符串也是不可变的,因此它们的索引/字符不能更改,对它们的任何赋值都将被忽略

myCompany[0][0] = new Array;
console.log(myCompany[0][0]); // 'e' (no change)

你知道我该如何通过window.prompt更新吗?请给我一点时间,让我试着实现这一点。我已经添加了我在原始问题中所做的,它更好formatting@MuhammadAli您评论中突出的一个问题是,
我的公司
在某些情况下会以空格列出,而不是总是以空格列出
myCompany
(我猜这只是一个打字错误)。是否有任何错误发生?或者,它会给你什么结果?你能详细解释一下控制台中的“不起作用”吗?这是一个打印错误:未捕获类型错误:无法在companyPush(scripts.js:14)中将属性“innerHTML”设置为null是的,这是一个输入错误。在代码中,它在所有地方都被称为myCompany。此外,在第四个提示“(“1”)之后,前三个提示的窗口提示也会成功。代码停止运行,只有提示中的前三个值被打印在相关位置。@MuhammadAli啊。由于
companyOne
指的是
,因此当您设置其
innerHTML
时,首先删除其所有
  • 并仅用提示中的文本替换它们。以后无法找到
  • ,因为它们已不在文档中要解决这个问题,您可以修改标记,使它们不是直接的父子标记。这里有一个选项:(使用常量而不是仅仅为了简洁而提示)。
    var myCompany = [ 'example' ];
    console.log(myCompany[0][0]); // 'e'
    console.log(myCompany[0][1]); // 'x'
    console.log(myCompany[0][2]); // 'a'
    
    // same as...
    console.log(myCompany[0].charAt(0)); // 'e'
    
    myCompany[0][0] = new Array;
    console.log(myCompany[0][0]); // 'e' (no change)