多个 GetElementByID 不起作用,如何循环 Javascript?

Posted

技术标签:

【中文标题】多个 GetElementByID 不起作用,如何循环 Javascript?【英文标题】:Multiple GetElementByID doesn't work, how do I loop Javascript? 【发布时间】:2019-08-18 00:57:32 【问题描述】:

我有多个 getElementById 根据列标题从 Google 表格中提取数据。当我只有一个getElementById 时,它可以完美运行,但是一旦我添加第二个,它就不行了。有人告诉我我需要循环它们,但还不知道怎么做。如果您能帮我循环它们,我将不胜感激。

function httpGetAsync(theUrl, callback) 
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.onreadystatechange = function() 
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
      callback(xmlHttp.responseText);
  
  xmlHttp.open("GET", theUrl, true); // true for asynchronous
  xmlHttp.send(null);


httpGetAsync('https://spreadsheet.glitch.me/? 
key = 1 JBbAHH1DFtO1r56lr94lUqd8H7qPcHncJskcPq0r96o ', function(response)
var json = JSON.parse(response);

document.getElementById("btm").innerhtml = json[0].btm;
);

document.getElementById("totalpoints").innerHTML = json[1].totalpoints;
);

document.getElementById("btm").innerHTML = json[1].btm;
);

document.getElementById("average").innerHTML = json[4].average;
);

【问题讨论】:

为什么你的代码中有这么多);?请发布一个minimal reproducible example 编译。请使用能指出所有这些明显错误的代码编辑器 您的第二个、第三个和第四个“document.getElementById”语句超出了 httpGetAsync 回调方法的范围。 json var是在回调方法的范围内定义的,因此无法访问 您的代码有语法错误。保持浏览器控制台打开,以便您注意到它们。 您会收到两次"btm"。第二次覆盖第一次。 【参考方案1】:

你正在用额外的“);”关闭你的回调函数在每个 document.getElementById...

删除它们,您的代码应该可以工作。

function httpGetAsync(theUrl, callback)  
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.onreadystatechange = function() 
  if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
     callback(xmlHttp.responseText);
  
  xmlHttp.open("GET", theUrl, true); // true for asynchronous
  xmlHttp.send(null);


httpGetAsync('https://spreadsheet.glitch.me/?key=1JBbAHH1DFtO1r56lr94lUqd8H7qPcHncJskcPq0r96o', function(response) 
var json = JSON.parse(response);

document.getElementById("btm").innerHTML = json[0].btm;
document.getElementById("totalpoints").innerHTML = json[1].totalpoints;
document.getElementById("btm").innerHTML = json[1].btm;
document.getElementById("average").innerHTML = json[4].average;
);
<div id="btm"></div>
<div id="totalpoints"></div>
<div id="average"></div>

【讨论】:

运行这段代码,上面写着"Uncaught SyntaxError: Invalid or unexpected token" @JeremyThille 我复制粘贴了一个额外的回车符。解决了这个问题。谢谢

以上是关于多个 GetElementByID 不起作用,如何循环 Javascript?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 多个 getElementByID

document.getElementById("myForm").submit() 不起作用[重复]

当 ID 是数字时,getElementById 不起作用

Javascript:document.getElementById.innerHTML 中的 if-else 语句不起作用

使用 document.getElementById(formName).submit() 在 FireFox 中不起作用,在 Chrome 和 IE11 中起作用

在 PHP 中,使用 DomDocument getElementByID 不起作用?我究竟做错了啥?