2013-11-25 65 views
-1

我的任務是設計一個算法,該算法將提示並從終端上的操作員處接收僱員編號。我的程序是搜索有效員工編號的數組,以檢查員工編號是否有效,查找並行數組以檢索該編號的相應員工姓名,並將名稱顯示在屏幕上。如果員工編號無效,則會顯示錯誤消息。JavaScript數組,代碼錯誤

var Emp_num = new Array(123,234,345,456,567,678,789,890,901,012); 
var Emp_name = new 
Array("ED","BOB","LOU","JEAN","MAX","SUE","VIC","TOM","CAL","MO"); 

var Req_num = prompt("Enter Employee Number: "); 

var Emp_idx = Emp_num.indexOf(parseInt(Req_num, 10)); 

if (Emp_idx > -1) { 
    alert("Employee name: " + Emp_name[Emp_idx]); 
} else { 
    alert("Employee number not found."); 
} 

我收到一條錯誤信息,當我運行這個,我只是好奇我做錯了什麼?

(對象不支持屬性或方法「的indexOf」)

此外,如果那裏有另一種方法來提高代碼,尖端被理解!!

+2

您是否使用IE8還是少了? – elclanrs

+1

我認爲所有瀏覽器都不支持'indexOf'。也許你應該循環訪問數組呢? –

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf提供Polyfill並顯示瀏覽器支持。 – epascarello

回答

1

Array.indexOf方法只存在於某些瀏覽器中。循環訪問數組中的項目以查看是否找到它。

0

對於支持indexOf(如IE8或更早版本)的瀏覽器,就可以實現它自己:

Array.prototype.indexOf = function(obj, start) { 
    for (var i = (start || 0), j = this.length; i < j; i++) { 
     if (this[i] === obj) { return i; } 
    } 
    return -1; 
} 

More InformationindexOf

+0

太棒了!只是好奇,但這個代碼是如何工作的?像......它究竟在做什麼以及如何? - 僅僅爲了一些個人知識(: – Ryanrrjk

+0

)基本上,它創建了一個名爲'indexOf'的函數,它是Array的* prototype *成員,因此它可以用於數組的任何實例。在代碼中,'this'引用數組你正在調用這個函數。 –