在 Javascript 中将文本输入设置为变量

Setting text input as a variable in Javascript

本文关键字:设置 变量 输入 文本 Javascript      更新时间:2023-09-26

我正在尝试将我的文本输入用作字符串变量,并将该变量用作 URL 的一部分来提取 JSON 数据,但我似乎无法让它正常工作。

我不知道我是否错误地设置了变量,但任何帮助将不胜感激。谢谢!

$(document).ready(function() {
    var p = document.querySelector('p');
    var input = document.getElementById('search').value;
    $("#go").click(function() { 
        if (input === '') {
            p.style.backgroundColor = 'transparent';
            p.classList.add = 'hide';
            p.innerHTML = '';
        } else {
            $.getJSON("https://en.wikipedia.org/w/api.php?action=opensearch&datatype=json&limit=5&search=" + input + "&callback=?", function(data) {
                p.innerHTML = "<br> Click the links below";
                p.classList.remove('hide');
                var i = 0
                for (i; i < 5; i++){
                    if (data[3][i] !== undefined){
                        p.innerHTML += '<h2> <a href ="' + data[3][i] + '" target = "_blank">' + data[1][i] + '<br>' + '<h3>' + data[2][i] + '</h3>' + '</h2>' 
                    } else {
                        p.innerHTML = ' <h2> No matching result </h2>';
                    }
                }
            });
        }
    });
});

在分配变量值时,它是空的,因为它在加载网站时运行,并且搜索框中可能还没有文本。您希望在单击#go时获取内容,因此只需在单击事件处理程序中分配它:

$(document).ready(function() {
var p = document.querySelector('p');
// the text field value is empty at this point
$("#go").click(function() { 
  // this is run when user clicks #go
  var input = document.getElementById('search').value;
  if (input === '') {
    p.style.backgroundColor = 'transparent';
    p.classList.add = 'hide';
    p.innerHTML = '';
  }
  else {
  // encode user input
  $.getJSON("https://en.wikipedia.org/w/api.php?action=opensearch&datatype=json&limit=5&search=" + encodeURIComponent(input) + "&callback=?", function(data) {
    p.innerHTML = "<br> Click the links below";
    p.classList.remove('hide');
    var i = 0
    for (i; i < 5; i++){
      if (data[3][i] !== undefined){
      p.innerHTML += '<h2> <a href ="' + data[3][i] + '" target = "_blank">' + data[1][i] + '<br>' + '<h3>' + data[2][i] + '</h3>' + '</h2>' 
    }
    else {
      p.innerHTML = ' <h2> No matching result </h2>';
    }
    }
  });
  }
});
});

此外,如果将用户输入包含在 URI 中,则应始终对其进行编码。否则,在搜索框中使用任何非字母数字字符(包括空格)时,您会遇到意外行为。有关如何以及原因的更详细说明,请参阅文档。