Javascript函数不返回CSHTML的值

时间:2015-02-05 16:48:59

标签: javascript cookies

我遇到了一个奇怪的问题。我的javascript函数似乎工作正常,当我alert("1"+res)它给了我想要的结果,但我试图设置一个复选框,它返回的布尔值,它只是不起作用。我必须遗漏一些愚蠢的东西,这里是我的代码首先是javascript函数:

function GetDisplayImages() {

        if (localStorage.DisplayImages) {
            var name = "DisplayImages=";
            var ca = document.cookie.split(';');
            for (var i = 0, len = ca.length; i < len; i++) {
                var c = ca[i].trim();
                if (c.indexOf(name) == 0) {

                    var res = c.substring(name.length, c.length);

                    // resetting, just in case local storage not in sync.
                    self.SetDisplayImages(res);

                    if (self.Debug) {
                        toastr.info(res, "Returning Display Images setting from Cookie", { timeOut: 0, extendedTimeOut: 0 });
                    }
                    alert("1"+res);
                    return res;
                }
            }
        }

    }

如上所述,alert("1"+res)显示所需的值。我似乎无法从我调用函数的.cshtml文件中获取该值。这是那里的代码:

chk.onload = function (e) {
    alert("2"+Library.settings.GetDisplayImages());
    this.value = Library.settings.GetDisplayImages();
}

alert(Library.settings.GetDisplayImages());甚至没有弹出,但我知道正在调用该函数,因为javascript函数中的警报确实显示出来。请帮助我,这样我就可以停止抨击我的桌子了! :)

实际上有2个错误,在这里它们是: enter image description here 这是我的整个脚本部分:

@section scripts{

    <script type="text/javascript">

    $(document).ready(function () {
        chk = document.getElementById("chkDisplayImages");

        chk.onload = function (e) {
            alert(Library.settings.GetDisplayImages());
            this.value = Library.settings.GetDisplayImages();
        }

        chk.onchange = function (e) {
            Library.settings.SetDisplayImages(this.checked);
        }
    });
    </script>

 }

SetDisplayImages()因某种原因完美无缺。

1 个答案:

答案 0 :(得分:0)

似乎有两个问题,一个是我的onload没有触发,两个字符串被返回而不是布尔值。这是我必须做的才能让它发挥作用:

<script type="text/javascript">

    chk = document.getElementById("chkDisplayImages");

    chk.onchange = function (e) {
        Library.settings.SetDisplayImages(this.checked);
    }

    window.onload(setCheckbox());

    function setCheckbox()
    {
        if (Library.settings.GetDisplayImages()=="true") 
            chk.checked = true;
        else 
            chk.checked = false;
    }

</script>

这不是最干净的方法,但它似乎是唯一可行的,我需要继续前进。