1

我是 javascript 新手,所以请与我裸露。这个网站上的每个人都对我们的新手非常了不起,所以提前谢谢你。所以这就是我的位置......我正在构建一个非常通用的音乐应用程序(sorta)。不会在任何实际场景中使用,只是为了学习和理解js。所以我被困在几个地方。我的数组对象有一个构造函数,我将专辑推入数组中,然后将它们显示到一个表格中,该表格可以通过单击按钮以不同的方式进行组织。现在我正在尝试有一个搜索框,它将让用户输入文本,将其与数组进行比较,然后当输出文本区域(或任何最好的)中显示匹配时,我似乎无法让它工作,任何帮助将不胜感激。另外,我应该有一个 window.onload 事件并将我的所有函数都初始化吗?

看看我在一起的一切: 这是我的小提琴

这是我似乎无法工作的代码:

    //function to display artist info inner HTML if in array
    function displaySearchResult() {
    albums.sort(compareSearch);
    var output= document.getElementById("response");
    var formInput = document.getElementById("formInput").innerHTML;
      for (var i=0; i<album.length; i++){
           if (album[i].artist == formInput) {
       output = formInput + " , " + album[i].title + " " + album[i].artist;

   } else {
      alert("not found");
   }
   }
 }

的HTML:

    <input type="text" id="formInput" value="Search for an Artist"> </input> <br>
    <button id="search" >Submit</button>
    <p><textarea name="response" rows="0" cols="45" wrap></textarea></p>
4

2 回答 2

1

不少问题,应该artists不是artistoutput.value不是output,在html中应该id不是namefor textarea,需要trim用户输入空格,我从循环里面去掉了alert(很烦)。我敢肯定还有一些其他的事情,但现在忘记了。我仍然看到一些可以改进的地方,但我没有对它们做任何事情。这是我的更新。(这很有趣,很多代码似乎很熟悉)。哦,是的,innerHTML如果你真的想使用,请小心使用textContent,以及从input元素获取用户输入时使用value

http://jsfiddle.net/Xotic750/SSVSW/

于 2013-04-27T02:47:48.470 回答
0

在分配语句中使用output.value而不是。output像这样

output.value = formInput + " , " + album[i].title + " " + album[i].artist;

此外,如果您希望显示多个列表,那么您必须连接结果。像这样

var output= document.getElementById("response");
var formInput = document.getElementById("formInput").innerHTML;
output.value = "";
  for (var i=0; i<album.length; i++){
       if (album[i].artist == formInput) {
           output.value += formInput + " , " + album[i].title + " " + album[i].artist;

       } else {
           alert("not found");
       }
  }

"response"为您的textarea标签分配 id 值,因为您正在使用getElementById.

最好具有window.onload初始化所有功能的功能

于 2013-04-27T02:34:53.327 回答