javascript变量未传递给隐藏的输入值

时间:2014-07-18 07:00:10

标签: javascript jquery

我有一个隐藏的输入如下:

<input class="item_shipval" type="hidden" value="" id="shipvalue">

和javascript代码如下:

<script type="text/javascript">
    if (shipEmpty){
        var shipval = myObject;
        document.getElementById('shipvalue').value = shipval;
    }
    else {
        var shipval = "Registered_Air_Mail";
        document.getElementById('shipvalue').value = shipval;
    }
    //console.log (shipval);
</script> 

Console.log正在显示shipval值。但它没有传递给id&#34; shipvalue&#34;的隐藏输入值。

上面的代码有什么问题?提前致谢。我是一个javascript新手..

2 个答案:

答案 0 :(得分:1)

试试这个:使用jQuery你可以设置隐藏变量的值,前提是你应该在使用之前在你的html中包含jquery库(参见下面的代码)。此外,document.ready将确保jQuery仅在加载所有DOM结构后执行。

注意 - 假设已经定义了myObject。

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">

$(document).ready(function(){

    var shipval = "Registered_Air_Mail";
    if (shipEmpty){
        shipval = myObject;
    }

    $('#shipvalue').val(shipval);

    console.log (shipval);
});
</script> 

编辑: - 删除javascript代码中shipval变量的重复声明,如下所示

<script type="text/javascript">
    var shipval = "Registered_Air_Mail"; // give some default value
    if (shipEmpty){
        shipval = myObject; // change value if condition is true
    }

    document.getElementById('shipvalue').value = shipval;

    console.log (shipval);
</script>

答案 1 :(得分:0)

确保您的JavaScript位于您页面上的HTML下方。这样,当您的JS尝试getElementById时,该元素实际存在于页面上。通常,您希望在结束</body>标记之前包含您的JS:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Example</title>
</head>
<body>
<!-- HTML goes first -->
<input class="item_shipval" type="hidden" value="" id="shipvalue">
<!-- JavaScript goes after -->
<script>
    window.onload = function() {
        var shipval;
        if (shipEmpty){
            shipval = myObject;
            document.getElementById('shipvalue').value = shipval;
        }
        else {
            shipval = "Registered_Air_Mail";
            document.getElementById('shipvalue').value = shipval;
        }
        // console.log (shipval);
    }
</script>
</body>
</html>

这是一个JSFiddle,http://jsfiddle.net/7EZ4Z/

如果将shipEmpty设置为true或false,则两者都有效。