Новая для JAVASCRIPT проблема с оператором IF и несколькими значениями

#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;
            }
    
    }