更改公共变量javascript的值

时间:2016-02-25 22:09:54

标签: javascript html

我想用函数更改公共变量的值,并使用其他函数中的新值。

我的用例:我想为倒计时器设置一个默认的公共变量,如果用户想要更改目标日期,他可以设置一个新的日期。为此,我创建了另一个更改公共变量的函数,但它似乎并不完美。

这是我的代码:

<table id="global" border="3">
    <tr>
        <td align="center">
            <form name="formInput" action="#">
                <label>Choose new Date: </label>
                <input type="date" name="field1" Id="txtvarInput" />
                <br />
                <br />
                </label>
                <div class="form-actions" "span3">
                    <input name="submit" type="submit" class="btn" value="Select" onclick="alertVal()" />
                </div>
            </form>
        </td>
    </tr>

    <tr id="countdownTimer">
        <td>
            <script type="application/javascript">
                var current = "Has been launched!"; //-->enter what you want the script to display when the target date and time are reached, limit to 20 characters
                var year;
                var month;
                var day;
                var hour = 0;
                var minute = 0;
                var second = 0;
                var ampm = "pm";
                var timezone = -5;

                function alertVal() {
                    var theInput = document.getElementById('txtvarInput').value;
                    var date_array = new Array();
                    date_array = theInput.split("-");
                    month = date_array[1];
                    year = date_array[0];
                    day = date_array[2];
                }


                var Countdown_Ignition = new Countdown({
                    width: 300,
                    height: 60,
                    year,
                    month,
                    day,
                    hour,
                    ampm,
                    minute,
                    second,
                    timezone,
                    rangeHi: "day",
                    style: "flip" // <- no comma on last item!!
                });
            </script>
        </td>

问题在于,当我更改日期时,我的第二个功能不会采用新值。

1 个答案:

答案 0 :(得分:0)

这不起作用,因为您在对象文字上传递(首先指向undefined),所以当您alertVal时功能&#34;更新&#34;值,它使一个指向新值的赋值(即22)。

如果要跟踪 Countdown对象内部的更改,则必须传递一个指向实际对象的变量(引用,而不是值)。所以,你的全局函数更新了同一个对象的属性,你赢了!

var publicObject = {
    year: null,
    day: null,
    etc: null
};

function setData(){
   publicObject.day = 'new value';
   publicObject.year = 'new value';
   publicObject.etc = 'and so on';
};

var  Countdown_Ignition = new Countdown({
                                            width:300, 
                                            height:60,
                                            publicObject,
                                            rangeHi:"day",
                                            style:"flip"       // <- no comma on last item!!
                                        });