Возможно, я неправильно структурировал этот код (впервые работаю с 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
_e_ - это имя, которое я дал первому аргументу функции обработчика событий - в JS это всегда событие. Событие имеет всевозможные свойства (положение мыши, тип события, цель и т. Д.), И вы можете прочитать об этом здесь: https://developer.mozilla.org/en/docs/Web/API/Event.Since я использовал в моем примере, действие по умолчанию в событии отправки «клик» должно отправить форму в URL, указанный в форме. – Sidd
... Но я не хочу отправлять на другой URL-адрес, я использовал только форму, чтобы использовать входные значения (и, прежде всего, чтобы нажатие «enter» после заполнения полей также вызывало бы обработчик только как щелчок) - поэтому я должен предотвратить это действие по умолчанию с помощью _e.preventDefault() _. Всякий раз, когда есть действие по умолчанию, связанное с событием (например, переход на другую страницу или что-то еще), и вы хотите переопределить это, _event.preventDefault() _ - ваш друг. В противном случае код в обработчике будет запущен, а затем продолжит действие по умолчанию. – Sidd