2012-08-30 55 views
0

編寫了一個循環查看在線測驗問題的函數。我在每個瀏覽器中都能正常工作,但IE(上帝,我希望IE只會蜷縮起來並死掉)。功能如下。「試圖更改IE中的樣式時,無法獲取屬性值'樣式'」

function cycleQs() { 
var qs = document.getElementsByName("quizQ"); 
var nextQBtn = document.getElementById("btnNextQ"); 
var i = 0; 
var curQ = -1; 
for (i = 0; i < qs.length; i++) { 
    if (qs[i].style.display == "block") { 
     curQ = i; 
    } 
    //qs[i].style.display = "none"; 
} 
var valid = false; 
if (curQ > -1) { 
    var qId = qs[curQ].id.replace("dv", ""); 
    var inps = document.getElementsByName(qId); 
    if (inps.length > 0) { 
     if (inps[0].type == "radio") { 
      for (i = 0; i < inps.length; i++) { 
       if (inps[i].checked) { 
        valid = true; 
       } 
      } 
     } else if (inps[0].type == "hidden") { 
      valid = true; 
      for (i = 0; i < inps.length; i++) { 
       if (inps[i].value <= 0) { 
        valid = false; 
       } 
      } 
     } 
    } else { 
     valid = true; 
    } 
} else { 
    valid = true; 
} 

if (valid == true) { 
    for (i = 0; i < qs.length; i++) { 
     qs[i].style.display = "none"; 
    } 
    if (curQ < (qs.length - 1)) { 
     qs[curQ + 1].style.display = "block"; 
     if (curQ == (qs.length - 2)) { 
      var scoreDv = document.getElementById("dvScore"); 
      nextQBtn.style.display = "none"; 
      var answers = getAnswers(); 
      //alert(answers) 
      scoreDv.innerHTML = "Processing"; 
      processResults(answers); 
     } 
    } else { 
     qs[0].style.display = "block"; // Problem occurs here when function first loads 
    } 
} else { 
    alert("You must select an answer before you can proceed"); 
} 
} 

一個解決有關此的任何想法?

回答

0

document.getElementsByName可能不返回任何東西,因爲IE的實現:see here

所以qs[0]可能不存在