2012-08-23 139 views
0

我正在使用Javascript來使我的檢查框更大。這樣做我使用圖像一黑色複選框和另一個與選中的複選框。它像真正的複選框一樣工作。但是,當頁面加載時,黑色複選框未成功加載,除非我單擊頁面中的某個位置來調用它們。請檢查頁面上的hereJavascript似乎無法加載圖像時頁面加載

Belowing是我的js代碼,我認爲這將影響到這一點:

var Custom = { 
    init: function() { 
     var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active; 
     for(a = 0; a < inputs.length; a++) { 
      if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "styled") { 
       span[a] = document.createElement("span"); 
       span[a].className = inputs[a].type; 

       if(inputs[a].checked == true) { 
        if(inputs[a].type == "checkbox") { 
         span[a].style.background = unchecked; 
        } else { 
         span[a].style.background = unchecked; 
        } 
       } 
       inputs[a].parentNode.insertBefore(span[a], inputs[a]); 
       inputs[a].onchange = Custom.clear; 
       if(!inputs[a].getAttribute("disabled")) { 
        span[a].onmousedown = Custom.pushed; 
        span[a].onmouseup = Custom.check; 
       } else { 
        span[a].className = span[a].className += " disabled"; 
       } 
      } 
     } 
} 

下面是我在窗體加載圖像: enter image description here

這是我的頁面點擊任意位置時: enter image description here 哪些其他函數和變量已經定義。因此,任何人都可以幫助我讓他們顯示每當表單加載?

回答

0

最終,我發現在我的Javascript代碼中的錯誤。我在init()函數中添加else語句以測試複選框是否也未被檢查。所以代碼變成如下:

if(inputs[a].checked == true) { 
    if(inputs[a].type == "checkbox") { 
      span[a].style.background = unchecked; 
    } 
} else { 
    span[a].style.background = unchecked; 
} 

然後它的工作!謝謝大家回顧並回答我的問題。

1

爲什麼你使用

if(inputs[a].checked == true) { 
     if(inputs[a].type == "checkbox") { 
      span[a].style.background = unchecked; 
     } else { 
      span[a].style.background = unchecked; 
     } 
    } 

但是,當我在http://checkintonight.freeiz.com/js/custom-form-elements.js 嘗試打開你的腳本調用函數明確的()在Custom.init()的結束,它的工作原理,我不知道

init: function() { 
    // 
    ... 
    // 
    this.clear(); 
} 

對不起,我英文不好

+0

上面的其他只是一個單選按鈕,我將稍後使用它的代碼。但是,使用this.clear()將刪除所有背景並僅顯示默認複選框。我想要的是加載頁面加載所有背景。 –