2013-02-06 105 views
0

我不知道我的代碼有什麼問題,但是當我使用addEventListener()時,它不會執行任何操作。addEventListener onClick不工作

有沒有人有另一種解決方案,以便我可以將#ibm按鈕ID綁定到compute()onClick事件?

我打算在Firfox操作系統上運行此操作,因此在按鈕本身上設置onClick屬性是禁止的,如CSP違規中所述。

function compute() 
    { 
var w = parseInt(document.getElementById('weight').value); 
var hf = parseInt(document.getElementById('height_ft').value); 
var hi = parseInt(document.getElementById('height_in').value); 

    if (!checker(w)) 
{ 

      showAndroidToast('Please input your weight'); 
    return; 
} 
else if (!checker(hf)) 
{ 

      showAndroidToast('Please input your height'); 
    return; 
} 


if (!checker(hi)) 
{ 
    var i = 0; 
    document.getElementById('height_in').value = i; 
} 
else 
{ 
    var i = parseInt(document.getElementById('height_in').value); 
} 

var comp_h = parseFloat((hf * 12) + (i * 1)); 
var tot_h = comp_h * comp_h;  

comp = formula(w, tot_h); 
document.getElementById('bmitot').value = comp; 

if (comp > 30) 
{ 
    document.getElementById('res').value = 'Severe Level! Thats too much FAT!  Go get some diet pills or something!'; 
    document.getElementById("bmitot").style.backgroundColor = "red"; 
    document.getElementById("zero").style.visibility = "hidden"; 
    document.getElementById("one").style.visibility = "hidden"; 
    document.getElementById("two").style.visibility = "hidden"; 
    document.getElementById("three").style.visibility = "visible"; 
} 
if (comp > 25 && comp <=29.9) 
{ 
    document.getElementById('res').value = 'Bad Level! You are too FAT!'; 
    document.getElementById("bmitot").style.backgroundColor = "yellow"; 
    document.getElementById("zero").style.visibility = "hidden"; 
    document.getElementById("one").style.visibility = "hidden"; 
    document.getElementById("two").style.visibility = "visible"; 
    document.getElementById("three").style.visibility = "hidden"; 
} 
if (comp > 18.5 && comp <=24.9) 
{ 
    document.getElementById('res').value = 'Nice! You are on the safe level!'; 
    document.getElementById("bmitot").style.backgroundColor = "green"; 
    document.getElementById("zero").style.visibility = "hidden"; 
    document.getElementById("one").style.visibility = "visible"; 
    document.getElementById("two").style.visibility = "hidden"; 
    document.getElementById("three").style.visibility = "hidden"; 
} 
if (comp < 18.5) 
{ 
    document.getElementById('res').value = 'Bad Level! Go get some nutrients!'; 
    document.getElementById("bmitot").style.backgroundColor = "yellow"; 
    document.getElementById("zero").style.visibility = "visible"; 
    document.getElementById("one").style.visibility = "hidden"; 
    document.getElementById("two").style.visibility = "hidden"; 
    document.getElementById("three").style.visibility = "hidden"; 
} 
} 

function formula(w, h) 
{ 
var bmi = w/h * 703; 
var a_bmi = Math.floor(bmi); 
var dif = bmi - a_bmi; 
dif = dif * 10; 
diff = Math.round(dif); 

if (dif == 10) 
{ 
    a_bmi += 1; 
    dif = 0;  
} 
bmi = a_bmi + "." + diff; 
return bmi; 
} 

function checker(type) 
{ 
    if (isNaN(parseInt(type))) 
{ 
    return false; 
} 
else if (type < 0) 
{ 
    return false; 
} 
else 
{ 
return true; 
} 
} 

function showAndroidToast(toast) 
{ 
    Android.showToast(toast); 
} 

document.getElementById('ibm').addEventListener('click', compute); 

回答

0

您的代碼執行得很好,計算功能正常觸發。 execute函數中的代碼可能存在問題。檢查這fiddle

+0

你爲什麼使用測試?我的代碼真的有問題嗎?即使當我使用我的瀏覽器運行代碼時,它也不會執行任何操作。 –

+0

我無法真正使用您的代碼,因爲有像「Android.showToast(toast)」這樣的函數不會在我的本地工作,而且我也沒有沒有完整的html來尋找'weight','height_ft'等等......我需要一個最小的測試用例來檢查事件是否正在執行。 –

+0

@MarcusAng他試圖創建一個[SSCCE](http://sscce.org/),這是調試編碼問題的正確方法。 – jbabey