在数组中搜索的功能不起作用?

时间:2014-12-07 21:49:23

标签: javascript html arrays function

我是JS的新手,我试图了解用户如何在输入框中搜索数字,并让javascript向用户提醒数字在数组中的位置,或者它根本不在数组中。我有一个链接到我的小提琴,问题是评论后下半部分的功能。

http://jsfiddle.net/83r24j3j/3/

任何帮助将不胜感激!谢谢。

(请原谅我提前使用document.write,一些坏习惯很难打破。)

3 个答案:

答案 0 :(得分:0)

尝试使用findNumber ...

function findNumber() {
    Query = parseInt(document.getElementById(Search).value, 10);
    var index = NumberArray.indexOf(Query);
    if (index > -1) {
        alert(Query + " was found at position " + index);
    } else {
        alert(Query + " is not found in the array");
    }
}

首先,您需要获取函数内的Query值。

其次,使用indexOf,效率更高。

答案 1 :(得分:0)

var NumberArray = [5, 65, 02,9, 87, 65, 48, 6];

function findnumber() {
    var Query = document.getElementById('s').value;
    var f = false;
    var i;
    for (i = 0; i < NumberArray.length; i++) {
        if (Query == NumberArray[i]) {
            f = true; break; }
    }
    if(f) alert(Query + " was found at position " + i); else 
         alert(Query + "is not found in the array");
}

Demo jsfiddle

答案 2 :(得分:0)

编辑:Oups,问题已被编辑了很多!所以我需要告诉这是this revision问题的答案。我试图在接近问题代码的同时解决问题和回答。


您的代码中有几个错误:

  1. 如果您使用&#34; 0&#34;开始一个数字,则它必须是有效的八进制值。因此,请避免使用078
  2. 您在findNumber定义中遇到拼写错误。
  3. 功能vs&#34;功能&#34;
  4. 在findNumber中执行不正确的方法(见下文)
  5. 查询错误传输到函数
  6. 试试这个:

    &#13;
    &#13;
        var NumberArray = [5, 65, 02, 04, 05, 80, 90, 01, 46, 87, 05, 6, 20, 48, 056, 78, 9, 7, 88, 9, 87, 65, 48, 6, 54, 3, 51, 90, 95, 60, 100];
    
        document.write("These are all of the numbers in the array");
        document.write("<br>");
        document.write(NumberArray);
        document.write("<hr>");
        var sum = 0;
        for (var i = 0; i < NumberArray.length; i++) {
          sum += Number(NumberArray[i]);
          var average = sum / NumberArray.length;
        }
    
        document.write("This is the sum of the array");
        document.write("<br>");
        document.write(sum);
        document.write("<hr>");
    
        document.write("This is the average of the array");
        document.write("<br>");
        document.write(average);    
    
        function findNumber(Query) {
          for (i = 0; i < NumberArray.length; i++) {
            if (Query == NumberArray[i]) {
              alert(Query + " was found at position " + i);
              return;
            }
          }
          alert(Query + "is not found in the array");
        }
    
    /* Not relevant here
        var lookingFor = prompt("who to look for?");
        for (i = 0; i < people.length; i++) {
          if (lookingFor == people[i]) {
            alert(lookingFor + " was found at position " + i);
          }
        }
    */
    &#13;
    <title>
      Array Search Test
    </title>
    
    <body>
      <input type="text" id="Search" />
      <button onclick="findNumber(document.getElementById('Search').value);">Search Array</button>
      <hr />
      <script src="external.js"></script>
    </body>
    &#13;
    &#13;
    &#13;

    如果你是javascript的初学者,你应该从最小的代码开始,并在你复杂化时经常测试。不要忘记在控制台中阅读错误消息。

    作为旁注,我建议你学习以下内容:

    1. 阅读像#34; JavaScript:The Good Parts&#34; (首先是道格拉斯·克罗克福德)。
    2. 了解jQuery的基础知识,如果你了解jQuery的基础知识(尽管不需要jQuery),你肯定会轻易避免使用document.write和alert。
    3. 之后,你可以尝试更深入地学习。