声明的变量返回' undefined'

时间:2018-05-09 12:34:47

标签: javascript

我已经尝试了所有我能想到的事情,以解决我的变量返回' undefined'。

我已经去了console.log疯狂检查一切正常,我现在正面对众所周知的砖墙。

该脚本位于结束正文标记之前。

我尝试将它放在页面的head部分,但是这开始在变量R和X上返回NaN。

在调用函数之前将变量放在开始脚本标记之后也是如此。我对javascript有点新,非常感谢任何帮助。

function DisplayInputValues() {

    var funds = document.getElementById("funds").value;
    var s = document.getElementById("sum").innerText;
    var j = document.getElementById('debt').value; //number of input fields

    var txtin; //class name of text input element
    var numin; // class name of number input element

    var L = 0;

    while (L < j) {

        console.log('funds= ' + funds); //just checking amount of funds shows correctly 
        console.log('debt = ' + s); //just checking Debt sum shows correctly
        console.log('Loop = ' + L);

        var userinput1 = document.getElementsByClassName('txtin')[L].value;
        console.log('Loop = ' + L + ' Text input = ' + userinput1);
        document.getElementById("showresults").innerHTML += userinput1 + "<br />";

        var userinput2 = document.getElementsByClassName('numin')[L].value;
        console.log('Loop = ' + L + ' Number input = ' + userinput2);
        document.getElementById("showresults").innerHTML += userinput2 +
            "<br/>" + 'Amount To Offer : ' + X + "<br />" + "<br />";

        var FP = funds / 100; // 1% of funds available
        var SP = s / 100; // 1% of debt total  
        var R = userinput2 / SP;
        R = R.toFixed(2);
        var X = FP * R;
        X = X.toFixed(2); //amount to offer in settlement

        console.log('Loop = ' + L + ' FP = ' + FP);
        console.log('Loop = ' + L + ' SP = ' + SP);
        console.log('Loop = ' + L + ' R = ' + R);
        console.log('Loop = ' + L + ' X = ' + X);
        console.log('Loop = ' + L + ' Amount to offer = ' + X);
        console.log('');

        L = L + 1;
    }
}

screenshot

1 个答案:

答案 0 :(得分:0)

计算后输出所有内容

在声明之前使用X.在您的原始代码中

document.getElementById("showresults").innerHTML += userinput2 + "<br/>" + 'Amount To Offer : ' + X + "<br />" + "<br />";

在宣布X之前,当然它会给你未定义的

我改变了事物的顺序,以便首先计算X然后使用

    var userinput1 = document.getElementsByClassName('txtin')[L].value;
    var userinput2 = document.getElementsByClassName('numin')[L].value;

    var FP = funds / 100; // 1% of funds available
    var SP = s / 100; // 1% of debt total  
    var R = userinput2 / SP;
    R = R.toFixed(2);
    var X = FP * R;
    X = X.toFixed(2); //amount to offer in settlement

    console.log('Loop = ' + L + ' Text input = ' + userinput1);
    document.getElementById("showresults").innerHTML += userinput1 + "<br />";

    console.log('Loop = ' + L + ' Number input = ' + userinput2);
    document.getElementById("showresults").innerHTML += userinput2 +
        "<br/>" + 'Amount To Offer : ' + X + "<br />" + "<br />";