表元素的JavaScript不透明度

表元素的JavaScript不透明度,javascript,html,css,ajax,Javascript,Html,Css,Ajax,我是JavaScript和AJAX的初学者 我有一个JavaScript代码,当select元素的状态改变时,它使用AJAX更新HTML表格元素(包含在div中)。 那部分工作得很好 另一方面,我无法使更新的不透明度动画正常工作。 Chrome的JavaScript控制台告诉我: 未捕获的TypeError:无法读取未定义的属性“style” 在JavaScript代码的第2行 以下是我的JavaScript代码: function fadeIn(objectToFade) { obje

我是JavaScript和AJAX的初学者

我有一个JavaScript代码,当select元素的状态改变时,它使用AJAX更新HTML表格元素(包含在div中)。 那部分工作得很好

另一方面,我无法使更新的不透明度动画正常工作。 Chrome的JavaScript控制台告诉我:

未捕获的TypeError:无法读取未定义的属性“style”

在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();
}

您没有传入对象引用,因此
objectToFade
未定义

setTimeout(fadeIn, 50);
所以你需要把它传下去

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

您的
淡出也有同样的问题

您没有传入对象引用,因此
objectToFade
未定义

setTimeout(fadeIn, 50);
所以你需要把它传下去

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

您的
淡出也有同样的问题

当您将
fadeOut
/
fadeIn
传递给
setTimeout
调用时,您不会指定它所期望的元素参数:

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

当您将
fadeOut
/
fadeIn
传递给
setTimeout
调用时,您不会指定它所期望的元素参数:

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

那没用,是吗?哈哈。我修正了,现在我得到了一个关于不透明度的NaN。参见OP中的编辑1。这不会有帮助,对吗?哈哈。我修正了,现在我得到了一个关于不透明度的NaN。参见OP中的编辑1。这不会有帮助,对吗?哈哈。我修正了,现在我得到了一个关于不透明度的NaN。请参见OPWell中的编辑1。它是否有要开始的不透明度值<代码>控制台.log(document.getElementById(“MetricsStatsByClient”).style.opacity)否,它没有。我假设有一个默认值,但您的代码显示。。。没有什么!谢谢你的提示,我会努力的。它很有效!我的AJAX请求太快,无法显示动画,但我单独测试了它,我有一个很好的流体淡入淡出。谢谢那没用,是吗?哈哈。我修正了,现在我得到了一个关于不透明度的NaN。请参见OPWell中的编辑1。它是否有要开始的不透明度值<代码>控制台.log(document.getElementById(“MetricsStatsByClient”).style.opacity)否,它没有。我假设有一个默认值,但您的代码显示。。。没有什么!谢谢你的提示,我会努力的。它很有效!我的AJAX请求太快,无法显示动画,但我单独测试了它,我有一个很好的流体淡入淡出。谢谢