Else语句未在javascript中执行

Else语句未在javascript中执行,javascript,if-statement,Javascript,If Statement,嘿,下面的代码中的家伙们,每次执行if语句时,不管条件是什么 function addRow(tableID) { var table = document.getElementById(tableID); if((document.getElementById('select_degree').style.visibility = 'hidden')&&(document.getElementById('select_degre

嘿,下面的代码中的家伙们,每次执行if语句时,不管条件是什么

function addRow(tableID) {

            var table = document.getElementById(tableID);
            if((document.getElementById('select_degree').style.visibility = 'hidden')&&(document.getElementById('select_degree')!=null)){
              document.getElementById('select_degree').style.visibility = 'visible';
              document.getElementById('select_ratings').style.visibility  = 'visible';
             }

            else{ 
            var rowCount = table.rows.length;
            var new_row = table.rows[rowCount-1];  


            var row = table.insertRow(rowCount);


            var colCount = table.rows[0].cells.length;




            for(var i=0; i<colCount; i++) {

                var newcell = row.insertCell(i);


                newcell.innerHTML = new_row.cells[i].innerHTML;
            }
           }             
        }

但是如果元素为null,我已经有一个else语句了

您的if语句没有使用正确的运算符。将
=
(用于赋值)替换为比较运算符:
=
。此外,在尝试检查元素的属性之前,必须先检查元素是否存在。如果不这样做,则当元素不存在时会出现异常

这是您的代码,已更正和清理:

function addRow(tableID) {
    var objSelectDegree = document.getElementById('select_degree');
    if (objSelectDegree != null && objSelectDegree.style.visibility == 'hidden') {
        objSelectDegree.style.visibility = 'visible';
        document.getElementById('select_ratings').style.visibility = 'visible';
    }
    else {
        // Moved table var to else block - it was not used unless else was hit
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;
        var new_row = table.rows[rowCount - 1];
        var row = table.insertRow(rowCount);
        var colCount = table.rows[0].cells.length;

        for (var i = 0; i < colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = new_row.cells[i].innerHTML;
        }
    }
}​
函数addRow(tableID){
var objSelectDegree=document.getElementById('select_degree');
if(objSelectDegree!=null&&objSelectDegree.style.visibility=='hidden'){
objSelectDegree.style.visibility='visible';
document.getElementById('select_ratings')。style.visibility='visible';
}
否则{
//将表变量移动到else块-除非命中else,否则不会使用它
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var new_row=table.rows[rowCount-1];
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;
对于(变量i=0;i
您的if语句没有使用正确的运算符。将
=
(用于赋值)替换为比较运算符:
=
。此外,在尝试检查元素的属性之前,必须先检查元素是否存在。如果不这样做,则当元素不存在时会出现异常

这是您的代码,已更正和清理:

function addRow(tableID) {
    var objSelectDegree = document.getElementById('select_degree');
    if (objSelectDegree != null && objSelectDegree.style.visibility == 'hidden') {
        objSelectDegree.style.visibility = 'visible';
        document.getElementById('select_ratings').style.visibility = 'visible';
    }
    else {
        // Moved table var to else block - it was not used unless else was hit
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;
        var new_row = table.rows[rowCount - 1];
        var row = table.insertRow(rowCount);
        var colCount = table.rows[0].cells.length;

        for (var i = 0; i < colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = new_row.cells[i].innerHTML;
        }
    }
}​
函数addRow(tableID){
var objSelectDegree=document.getElementById('select_degree');
if(objSelectDegree!=null&&objSelectDegree.style.visibility=='hidden'){
objSelectDegree.style.visibility='visible';
document.getElementById('select_ratings')。style.visibility='visible';
}
否则{
//将表变量移动到else块-除非命中else,否则不会使用它
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var new_row=table.rows[rowCount-1];
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;
对于(变量i=0;i
style.visibility='hidden'
->
style.visibility=='hidden'

<CODE>
function addRow(tableID) {

   var table = document.getElementById(tableID);
   if((document.getElementById('select_degree').style.visibility == 'hidden') && (document.getElementById('select_degree')!=null)){
     document.getElementById('select_degree').style.visibility = 'visible';
     document.getElementById('select_ratings').style.visibility  = 'visible';
   }

   else{ 
     var rowCount = table.rows.length;
     var new_row = table.rows[rowCount-1];
     var row = table.insertRow(rowCount);                
     var colCount = table.rows[0].cells.length;

     for(var i=0; i<colCount; i++) {     
       var newcell = row.insertCell(i);                    
       newcell.innerHTML = new_row.cells[i].innerHTML;
     }
  }             
}

函数addRow(tableID){
var table=document.getElementById(tableID);
if((document.getElementById('select_degree')。style.visibility=='hidden')&(document.getElementById('select_degree')!=null)){
document.getElementById('select_degree')。style.visibility='visible';
document.getElementById('select_ratings')。style.visibility='visible';
}
否则{
var rowCount=table.rows.length;
var new_row=table.rows[rowCount-1];
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;

对于(var i=0;i
style.visibility='hidden'
->
style.visibility=='hidden'

<CODE>
function addRow(tableID) {

   var table = document.getElementById(tableID);
   if((document.getElementById('select_degree').style.visibility == 'hidden') && (document.getElementById('select_degree')!=null)){
     document.getElementById('select_degree').style.visibility = 'visible';
     document.getElementById('select_ratings').style.visibility  = 'visible';
   }

   else{ 
     var rowCount = table.rows.length;
     var new_row = table.rows[rowCount-1];
     var row = table.insertRow(rowCount);                
     var colCount = table.rows[0].cells.length;

     for(var i=0; i<colCount; i++) {     
       var newcell = row.insertCell(i);                    
       newcell.innerHTML = new_row.cells[i].innerHTML;
     }
  }             
}

函数addRow(tableID){
var table=document.getElementById(tableID);
if((document.getElementById('select_degree')。style.visibility=='hidden')&(document.getElementById('select_degree')!=null)){
document.getElementById('select_degree')。style.visibility='visible';
document.getElementById('select_ratings')。style.visibility='visible';
}
否则{
var rowCount=table.rows.length;
var new_row=table.rows[rowCount-1];
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;

对于(var i=0;i这就是我喜欢yoda条件的原因。您正在分配一个值(
=
),而不是计算它


EDIT正如建议的那样,我可以指出,这个特定语句中的检查顺序是错误的。在尝试修改其属性之前,应该先检查元素
\select\u degree
是否存在

但是,如果元素存在,条件仍然会计算为true,因为赋值的返回值(
=
)被用作参数。作为yoda条件的倡导者,我是否可以指出它们的优点:对于以下语句,可能会引发语法错误:

if ('hidden' = element.style.visibility)
{
// ...
}

这就是我喜欢yoda条件的原因。你在赋值(
=
),而不是计算它


EDIT正如建议的那样,我可以指出,这个特定语句中的检查顺序是错误的。在尝试修改其属性之前,应该先检查元素
\select\u degree
是否存在

但是,如果元素存在,条件仍然会计算为true,因为赋值的返回值(
=
)被用作参数。作为yoda条件的倡导者,我是否可以指出它们的优点:对于以下语句,可能会引发语法错误:

if ('hidden' = element.style.visibility)
{
// ...
}
在您的if声明中:

'=' should be '==' for starters
然后:

在检查属性是否为null之前先检查属性,如果切换属性,程序将首先检查null,如果为null,则转到else,然后检查第二个条件

在这种情况下,即使它为null,它也将访问if语句中的.style.visibility

'=' should be '==' for starters
然后:

在检查属性是否为null之前先检查属性,如果切换属性,程序将首先检查null,如果为null,则转到else,然后检查第二个条件

<