也許我構造這個代碼是錯誤的(第一次使用Javascript),但我想採取用戶輸入並搜索數組數組來檢查具有該名稱的數組存在。Javascript:使用用戶輸入來搜索數組陣列
我第一次嘗試使用eval()函數,我已經被告知不好,但它在有匹配時工作,失敗時匹配不存在,雖然。
該程序的基本前提是存在一個數組,其中包含的位置隨後是包含食品項目的數組。用戶輸入食物的名稱和他們想要放置的位置,它將創建食物對象,將該對象插入數組中的正確位置,並將該項目輸入到以html顯示的列表中。
這裏的所有代碼至今:
var fridge = [];
var freezer = [];
var pantry = [];
var locations = [fridge, freezer, pantry];
function Food(name, location, locationName){
this.name = name;
this.location = location;
this.locationName = locationName;
this.displayName = function(){
alert(this.name);
};
};
function createFood(){
var name = prompt("Enter the items name:");
var locationName = prompt("Enter a location to store it:")
var location = eval(locationName);
while(locations.indexOf(location) == -1){
alert("This is not an actual location.");
locationName = prompt("Please enter another location:");
location = eval(locationName);
};
var x = new Food(name, location, locationName)
function insertFood(Food){
var a = locations.indexOf(Food.location);
locations[a].push(Food);
var list = document.getElementById(Food.locationName + "_items");
var li = document.createElement("li");
li.innerHTML = Food.name;
list.insertBefore(li, list.lastChild);
};
insertFood(x);
};
請讓我知道這是錯誤的結構性原因,這是我在第一眼結構的想法。
謝謝!
非常感謝你的幫助。肯定會學到很多我不知道的東西。只是幾個簡單的問題:在這種情況下e.preventDefualt()的目的是什麼,querySelector()比getElementById()有什麼優勢? – Mark 2015-04-02 20:05:53
_e_是我給我的事件處理函數的第一個參數的名稱 - 在JS中,這總是事件本身。該事件具有各種屬性(鼠標位置,事件類型,目標等) - 你可以在這裏閱讀:https://developer.mozilla.org/en/docs/Web/API/Event。因爲我使用了表單在我的示例中,「點擊」提交事件的默認操作是將表單提交到表單中指定的URL。 – Sidd 2015-04-02 20:46:58
...但我不想提交給另一個URL,我只使用了表單,以便我可以使用輸入值(最重要的是,填充字段後按「enter」也會觸發處理程序像點擊) - 所以我必須使用_e.preventDefault()_來防止此默認操作。每當有一個與事件相關的默認動作(比如去一個不同的頁面或其他東西),並且你想覆蓋它時,_event.preventDefault()_就是你的朋友。否則,處理程序中的代碼將運行,然後繼續執行默認操作。 – Sidd 2015-04-02 20:48:12