全局变量未按预期工作

时间:2013-04-29 05:19:54

标签: jquery global-variables

我有以下代码

<script type="text/javascript">
    $(function()
    {
        var originalValue = $('#IndividualSystemSerialNumberCompanyId').val();
        $('#IndividualSystemSerialNumberCompanyId').change(function()
        {
            var main     = $(this);
            var newValue = main.val();

            $('#ChangeCompanyName').remove();

            if(originalValue != newValue)
            {
                console.log(originalValue);
                main.after('<span id="ChangeCompanyName" style="color:red;">&nbsp;&nbsp;&nbsp;Changing Company name will permanatly trasnfer IPC to changed company and old IPC record will be disabled.</span>');
            }
        });
    });

</script>

但是上面的代码不能每次都工作console.log(originalValue)我意味着如果我选择旧的选定值,它总是执行if条件。

我之前需要定义var originalValue;吗?

2 个答案:

答案 0 :(得分:1)

感谢您的帮助,看看我的问题,但在jsfiddle开发Demo期间,我解决了问题。

我使用了以下代码并且它的工作非常完美。

<script type="text/javascript">
    var originalValue;
    $(function()
    {
        originalValue = $('#IndividualSystemSerialNumberCompanyId').val();
        $('#IndividualSystemSerialNumberCompanyId').change(function()
        {
            var main     = $(this);
            var newValue = main.val();

            $('#ChangeCompanyName').remove();

            if(originalValue != newValue)
            {
                main.after('<span id="ChangeCompanyName" style="color:red;">&nbsp;&nbsp;&nbsp;Changing Company name will permanatly trasnfer IPC to changed company and old IPC record will be disabled.</span>');
            }
        });
    });

</script>

我已经在document.ready块之外定义了它并且它已经解决了。可能是因为小提琴会自动调用document.ready 所以旧代码在那里工作但是上面的变化对我来说无处不在。

再次感谢您花了很多时间。

答案 1 :(得分:0)

这是因为您的originalValue永远不会更新,总是等于2,您需要在if声明中为其指定新值:

if(originalValue != newValue)
{
    console.log(originalValue);
    originalValue = newValue;          
    main.after('<span id="ChangeCompanyName" style="color:red;">&nbsp;&nbsp;&nbsp;Changing Company name will permanatly trasnfer IPC to changed company and old IPC record will be disabled.</span>');
}