Недавно я учился использовать Javascript. Однако у меня возникают проблемы при попытке выполнить простой проект, который я делаю для себя. В основном у меня есть раскрывающееся меню, которое содержит процессоры Intel и AMD, а другое меню содержит графические процессоры тех же компаний. Я хочу, чтобы пользователь мог выбирать ЦП и ГП из списков и кода, чтобы сказать, подходят они друг другу или несовместимы.
<!DOCTYPE HTML>
<HTML>
<HEAD>
<script type = "text/javascript">
function populate(S1,S2){
var S1 = document.getElementById(S1);
var S2 = document.getElementById(S2);
S2.innerHTML = "";
switch(S1.value) {
case "Intel":
var optionArray = ["","I7","I5"];
break;
case "AMD":
var optionArray = ["","RX500","RX100"];
break;
default:
break;
}
for(var i = 0; i < optionArray.length; i++) {
var option = document.createElement("option");
option.text = optionArray[i];
S2.add(option);
}
}
</script>
<script type = "text/javascript">
function populate2(S3,S4){
var S3 = document.getElementById(S3);
var S4 = document.getElementById(S4);
S4.innerHTML = "";
switch(S3.value) {
case "Intel":
var optionArray = ["","GTX1080","GTX1050"];
break;
case "AMD":
var optionArray = ["","RX500","RX100"];
break;
default:
break;
}
for(var i = 0; i < optionArray.length; i++) {
var option = document.createElement("option");
option.text = optionArray[i];
S4.add(option);
}
}
</script>
<script>
function compatable() {
var S1
var S4
var text
if (S1 == S4) {
text = "these parts are compatable";
} else if (S1!= S4) {
text = "These parts are not compatable";
}
}
</script>
<button onclick = "compatable()">Submit</button>
</head>
<body>
<h1>Pick your CPU</h1>
<hr />
Choose Your Brand
<select id = "Select1" name = "Select1" onchange = "populate(this.id,'Select2')">
<option value = ""></option>
<option value = "Intel">Intel</option>
<option value = "AMD">AMD</option>
</select>
<hr />
Choose Your Model
<select id = "Select2" name = "Select2">
<hr />
<P>Pick your GPU</p>
<hr />
Choose Your Brand
</select>
<select id = "Select3" name = "Select3" onchange = "populate2(this.id,'Select4')">
<option value = ""></option>
<option value = "Intel">Intel</option>
<option value = "AMD">AMD</option>
</select>
<hr />
Choose Your Model
<select id = "Select4" name = "Select4">
<hr />
</body>
</html>Вы были очень дружелюбны, когда рассказывали все это, но какой у вас вопрос?
а) в чем вопрос? б) у вас есть опечатка в названии вашей функции
Хорошо, извините, я забыл удалить эту третью функцию. Мы можем игнорировать это. В основном мой вопрос в том, что если я выберу, скажем, GTX1070 из раскрывающегося списка и соединю его, скажем, с процессором I3, как мне написать код, который скажет мне, совместимы ли они. Я не знаю, как это сделать. Любая помощь будет принята с благодарностью.
Добавьте образец кода в виде исполняемого фрагмента, чтобы быстрее выявлять ошибки и люди могли напрямую протестировать его.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ниже приведена функция для выбора правильного теста совместимости в зависимости от значения S1.value, а ниже - функция для проверки совместимости S3.value со значением S1.value.
Пример функции Compatibility_Test_I7 () создает массив, содержащий компоненты, совместимые с I7, а затем просматривает его, чтобы увидеть, эквивалентны ли S3.value какому-либо из объектов в массиве совместимых компонентов.
function Call_Test() {
switch(S1.value) {
case "I7":
Compatibility_Test_I7();
break;
case "I5":
Compatibility_Test_I5();
break;
case "RX500":
Compatibility_Test_RX500();
break;
case "RX100":
Compatibility_Test_RX100();
break;
` default:
break;
}
}
function Compatibility_Test_I7() {
var Compatible_I7 = ['GTX1080', 'GTX1050']
(step = 0; step < 5; step++)
for (i = 0; i < Compatible_I7.length; i++) {
if (Compatible_I7(i) == S3.value ) {
return "Compatible Configuration";
} else {
/* Nothing *\
}
}
}
Итак .. это
compatableилиcomtpatable? Просто убедитесь, что вы сначала избегаете опечаток. И вы забыли добавитьoption.valueпри динамическом добавлении элемента option. ИS1иS2в вашемcomtpatableвсегда будутundefined, поскольку вы объявили это в области действия функции, а не глобально. Ваш вопрос непонятный