#javascript #if-statement
#javascript #if-statement
Вопрос:
У меня есть страница, представляющая собой форму, которая может содержать либо 33 вопроса, либо 28 вопросов, в зависимости от того, какую форму выберет пользователь. Форма вычисляет оценку пользователя в зависимости от того, что он выбирает. Формы отлично работают, когда это всего лишь одна форма, но мне нужно, чтобы две работали по-разному, поскольку некоторые вопросы приводят к снижению оценки, а не к увеличению, если пользователь выбирает ее. вот JAVASCRIPT, который я использую. В предыдущем коде был только один оператор if qtn_nbr <=16. Я добавил новую переменную form_nm, которая сообщает мне, нужно ли форме вычитать 16 или 18 вопросов. Однако приведенный ниже код распознает только первый оператор if для 18, но когда я переключаюсь на форму для 16, он не переходит к else if, даже если значение для form_nm теперь равно 16. Может кто-нибудь, пожалуйста, взглянуть на мой синтаксис и сообщить мне, если я что-то упускаю или у них есть лучшая логика для переключения между этими двумя значениями? Любая помощь была бы очень признательна.
function valuechanged(inval, totalqtns)
{
//alert(inval.name);
//alert(inval.value);
var val = inval.value;
var str = inval.name;
var qtn_nbr = String(str).substring(4);//get the number of the question
var formnm = document.getElementById(formname); //get question number
//alert(qtn_nbr);
var txt1 = 'pos_pt_' qtn_nbr;
//alert(document.getElementById(txt1).value);
var txt2 = 'pt_' qtn_nbr;
var txt3 = 'qtn_' qtn_nbr '_comm';
var txt4 ='comm_' qtn_nbr;
//alert('here');//current display of here when clicking on any point value!
document.getElementById(txt2).value= 0;
//alert(document.getElementById(txt2).value);
if (formnm = 18 amp;amp; qtn_nbr <= 18)
{
if (val == 'yes')
{
document.getElementById(txt2).value = document.getElementById(txt1).value;
//document.getElementById(txt3).disabled = true;
document.getElementById(txt3).value='';
document.getElementById(txt4).value='';
}
else if (val == 'half')
{
document.getElementById(txt2).value = parseInt(document.getElementById(txt1).value)/2;
//document.getElementById(txt3).disabled = false;
}
else
{
document.getElementById(txt2).value = 0;
//document.getElementById(txt3).disabled = false;
}
}
else if (formnm = 16 amp;amp; qtn_nbr <= 16)
{
if (val == 'yes')
{
document.getElementById(txt2).value = document.getElementById(txt1).value;
//document.getElementById(txt3).disabled = true;
document.getElementById(txt3).value='';
document.getElementById(txt4).value='';
}
else if (val == 'half')
{
document.getElementById(txt2).value = parseInt(document.getElementById(txt1).value)/2;
//document.getElementById(txt3).disabled = false;
}
else
{
document.getElementById(txt2).value = 0;
//document.getElementById(txt3).disabled = false;
}
}
else
{
document.getElementById(txt2).value = - parseInt(document.getElementById(txt1).value); //negative points
}
//alert(document.getElementById(txt2).value);
var totval = calctotal(totalqtns);
document.getElementById('total').value = totval;
}
Комментарии:
1.
=
предназначен для присвоения значений==
и===
сравнения.
Ответ №1:
Я понял это, спасибо за помощь. Вместо установки переменной, если я использовал значение в операторе if, тогда оно работало с == .
if (document.getElementById('formname').value == 18 amp;amp; qtn_nbr <= 18)
{
if (val == 'yes')
{
document.getElementById(txt2).value = document.getElementById(txt1).value;
//document.getElementById(txt3).disabled = true;
document.getElementById(txt3).value='';
document.getElementById(txt4).value='';
}
else if (val == 'half')
{
document.getElementById(txt2).value = parseInt(document.getElementById(txt1).value)/2;
//document.getElementById(txt3).disabled = false;
}
else
{
document.getElementById(txt2).value = 0;
//document.getElementById(txt3).disabled = false;
}
}
else if (document.getElementById('formname').value == 16 amp;amp; qtn_nbr <= 16)
{
if (val == 'yes')
{
document.getElementById(txt2).value = document.getElementById(txt1).value;
//document.getElementById(txt3).disabled = true;
document.getElementById(txt3).value='';
document.getElementById(txt4).value='';
}
else if (val == 'half')
{
document.getElementById(txt2).value = parseInt(document.getElementById(txt1).value)/2;
//document.getElementById(txt3).disabled = false;
}
else
{
document.getElementById(txt2).value = 0;
//document.getElementById(txt3).disabled = false;
}
}