获取值并将它们分配给隐藏字段

时间:2011-11-03 19:04:32

标签: javascript html

我有以下函数,它假设从表单中的字段中获取值,并在调用时将其分配给隐藏字段。由于某种原因它不起作用,我不能给你更多的细节,为什么它不工作只是因为JavaScript并没有真正告诉你很多错误。

function clickChange(stype){

    if(stype == '1'){
        var fValue = document.getElementById('checkB1').value;
        if(fCatValue == 0){
            fCatValue = fValue;
        }else{
            fCatValue = 0;
        }
        document.getElementById('cat_1').value = fCatValue;
    }elseif(stype == '2'){
        var sValue = document.getElementById('checkB2').value;
        if(sCatValue == 0){
            sCatValue = sValue;
        }else{
            sCatValue = 0;
        }
        document.getElementById('cat_2').value = sCatValue;
    }
}

2 个答案:

答案 0 :(得分:2)

您需要将值转换为整数,或将它们视为字符串:

或者:

var fValue = parseInt(document.getElementById('checkB1').value)
        if(fCatValue == 0){....

var fValue = document.getElementById('checkB1').value;
        if(fCatValue =='0'){...

答案 1 :(得分:1)

由于你的变量sCatValue的声明的位置,看起来sCatValue超出了范围(或者根本没有声明)。如果宣布你的全部内容,你可能会更容易函数开头的函数范围变量,并减少嵌套if语句的数量。

我还建议你使用self explanatory variable names来减少自己的困惑。此外,我建议使用像firebug这样的javascript调试器或者内置的9个调试器来浏览代码。 (我知道很惊讶)。并使用 jshint来帮助解决常见规则。

我发现了一些其他的错误并清理了一些东西,这就是我得到的

function clickChange(stype) {

    //declared at the start so no scope undefined issues
    var sValue = document.getElementById('checkB2').value;
    var fValue = document.getElementById('checkB1').value;

    //changed the comparision op from == to ===
    //in javascript '===' throws false if the types compared are not the 
    //same otherwise it attemps to preform implicit casting for you
    if (stype === '1') {

        //parsing to insure that the types are matching
        //the 10 is a radix param. It insures your number is formatted as a decimal
        if (parseInt(fCatValue,10)=== 0) {
            fCatValue = fValue;
        } else {
            fCatValue = 0;
        }
        document.getElementById('cat_1').value = fCatValue;
    } else if (stype === '2') {
        if (parseInt(sCatValue,10)=== 0) {
            sCatValue = sValue;
        } else {
            sCatValue = 0;
        }
        document.getElementById('cat_2').value = sCatValue;
    }
}