2013-05-17 150 views
0

我是JavaScript和AJAX的初學者!表格元素的JavaScript不透明度

我有一個JavaScript代碼,當select元素的狀態發生變化時,使用AJAX更新HTML表格元素(包含在div中)。 這部分工作完美。

另一方面,我無法得到一個不透明的動畫更新工作。 Chrome瀏覽器的JavaScript控制檯告訴我:

Uncaught TypeError: Cannot read property 'style' of undefined

位於JavaScript代碼的第2行。

這裏是我的JavaScript代碼:

function fadeIn(objectToFade) { 
    objectToFade.style.opacity = parseFloat(objectToFade.style.opacity) + 0.1; 

    if (objectToFade.style.opacity < 1) { 
     setTimeout(function() { fadeIn(objectToFade); }, 50); 
    } 
} 

function fadeOut(objectToFade) { 
    objectToFade.style.opacity = parseFloat(objectToFade.style.opacity) - 0.1; 

    if (objectToFade.style.opacity > 0.2) { 
     setTimeout(function() { fadeOut(objectToFade); }, 50); 
    } 
} 

function changeClient(client) { 

    var clientTableDiv = document.getElementById("clientTable"); 
    var xmlhttp = new XMLHttpRequest(); 

    fadeOut(document.getElementById("MetricsStatsByClient")); 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      clientTableDiv.innerHTML = xmlhttp.responseText; 
      fadeIn(document.getElementById("MetricsStatsByClient")); 
     } 
    } 

    xmlhttp.open("GET","functions.php?fct=cc&client=" + client, true); 
    xmlhttp.send(); 
} 

看來 「風格」 屬性不被認可。 我在做什麼錯?

謝謝!

編輯1

固定遞歸調用的參數後,我得到NaN(非數字),而在changeClient功能運行以下命令:

alert(parseFloat(document.getElementById("MetricsStatsByClient").style.opacity)); 

回答

4

您還沒有傳入對象引用,因此objectToFade未定義。

setTimeout(fadeIn, 50); 

所以你需要與你的fadeOut也把它傳遞

setTimeout(function() { fadeIn(objectToFade); }, 50); 

同樣的事情。

+0

這不會幫助,會嗎?哈哈。我修好了,現在我得到了不透明的NaN。請參閱OP –

+1

中的編輯1那麼它是否具有不透明度值開始? 'console.log(document.getElementById(「MetricsStatsByClient」)。style.opacity);' – epascarello

+0

不,它不。我認爲有一個默認值,但你的代碼顯示......什麼都沒有! 感謝您的提示,我會在此工作。 –

2

當你通過fadeOut/fadeInsetTimeout電話,你不指定它期待的元素參數:

if (objectToFade.style.opacity < 1) { 
    setTimeout(function() { 
     fadeIn(objectToFade); 
    }, 50); 
} 
+0

這不會幫助,會嗎?哈哈。 我修好了,現在我得到了一個不透明的NaN。 參見OP編輯1。 –