JavaScript中的用户输入和解析

问题描述 投票:0回答:1

我的目标:

  1. 询问用户输入(例如,“请输入类别:'用户输入'”))
  2. 使用'用户输入作为查询参数通过API搜索数据
  3. 将结果返回给用户

这是我到目前为止的内容:

<!DOCTYPE html>
<html>
<body>

<div id='showCD'></div><br>
<input type="button" onclick="previous()" value="<<">
<input type="button" onclick="next()" value=">>">

<script>
var i = 0, len;
displayCD(i);


function displayCD(i) {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myFunction(this, i);
    }
  };
  xmlhttp.open("GET", 'http://www.example.com/api/search/?query=engines&format=xml', true);
  xmlhttp.send();
}

function myFunction(xml, i) {
  var xmlDoc = xml.responseXML; 
  x = xmlDoc.getElementsByTagName("video");
  len = x.length;
  document.getElementById("showCD").innerHTML =
  "Title: " +
  x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue +
  "<br>Url: " +
  x[i].getElementsByTagName("url")[0].childNodes[0].nodeValue +
  "<br>Embed code: " + 
  x[i].getElementsByTagName("embed")[0].childNodes[0].nodeValue;
}

function next() {
  if (i < len-1) {
    i++;
    displayCD(i);
  }
}

function previous() {
  if (i > 0) {
    i--;
    displayCD(i);
  }
}
</script>

</body>
</html>

这将返回结果,让我用所有正常但繁琐的按钮浏览它们,但是我似乎无法找出一种方法来用值替换“ engines”的值(我上面已将其作为查询参数) '用户输入'。我以为可以为用户输入创建一个带有document.getElementById的变量,然后使用url ='http://www.example.com/api/search/?query='使用url.concat(str1,str2)创建另一个变量,str1 =该变量包含返回的用户输入,而str2 ='&format = xml',但效果不佳。

总之,最终目标是:用用户输入的内容代替'引擎'查询参数所在的位置。

我认为我需要使用回调或异步。我是新来的,还在学习。

javascript html user-input concat
1个回答
0
投票
<body>

...

<span>Please enter a category:</span>
<input type="text" id="category">
<input type="button" value="Search" onclick="search()"

<script>

    function search() {
        let query = document.getElementById('category').value;
        let url = `http://www.example.com/api/search/?query=${query}&format=xml`;
        ...
        xmlhttp.open("GET", url);
        xmphttp.send();
    }

</script>


</body>
© www.soinside.com 2019 - 2024. All rights reserved.