Else语句未在javascript中执行
嘿,下面的代码中的家伙们,每次执行if语句时,不管条件是什么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
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;istyle.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,然后检查第二个条件
<