【问题标题】:XMLHttpRequest() exerciseXMLHttpRequest() 练习
【发布时间】:2020-01-26 04:26:15
【问题描述】:

我正在调用一个从文件中读取随机名称的 php 文件。 我想动态地将名称添加到表中。如果名称已经存在,我想增加位于它旁边另一个单元格中的计数。我的代码中有一个错误,我找不到它。

这是我的代码

et button = document.querySelector("input");
let par = document.querySelector("p");
let table = document.querySelector("table");
let xhr;
let myArr=[14];
let tempStrin;

function upDateTable(name){

    for(let i=0; i < myArr.length; i++){
        if(myArr[name>=1]){
            myArr[name]++;
            document.querySelectorAll(`#${name}`).innerText = myArr[name];
        }
        else{
            myArr[name]=1;
            table.innerHTML+=`<tr><td>${name}</td><td id=${name}>${myArr[name]}</td></tr>`
        }
    }
}

function xhrCall () {

    try {
        xhr = new XMLHttpRequest();
        xhr.addEventListener(`readystatechgange`, function () {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                    tempStrin = xhr.responseText;
                    updateTable(tempStr);
                }//if
            }//if
        });//on readystatechange

    xhr.open('GET', "http://csdev.cegep-heritage.qc.ca/students/1175333/JBarbeau_C31L03_Files/php/random.php");
    xhr.send();
}
catch(e){
        console.error("Request did not work");
}

}

let testTime;
button.addEventListener('click' ()=>{
    if (button.value==="Start"){
        button.value==="Stop";
        testTime= setInterval(xhrCall,3000);
    }
    else if(button.value==="Stop"){
        button.value="Start";
        clearInterval(testTime);
    }
});

【问题讨论】:

    标签: xml xmlhttprequest


    【解决方案1】:

    我对@9​​87654321@ 感到不舒服,我相信这是它不起作用的原因之一。 querySelectorAll 将返回一个HTMLCollection,因此在其上设置innerText 没有意义。此外,您使用的是 Id,因此从技术上讲,它在您的页面上应该是唯一的。

    另外,我认为您将从“字典”对象而不是经典数组中受益匪浅:

    let dict = {};
    
    function upDateTable(name){
        //We check if our name exists
        if (dict[name]) {
            dict[name] += 1;
            document.getElementById(`#${name}`).innerText = myArr[name];
        } else {
            dict[name] = 1;
            //no reason to put our value in the string, we know it's always 1
            table.innerHTML += `<tr><td>${name}</td><td id=${name}>1</td></tr>`; 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2012-07-05
      • 2011-11-05
      相关资源
      最近更新 更多