2015-02-05 3 views
0

У меня возникла странная проблема. Моя функция javascript, кажется, работает нормально, когда я alert("1"+res), она дает мне желаемые результаты, но я пытаюсь установить флажок с логическим возвратом, и он просто не будет работать. Должно быть, я что-то глупое хватаю, вот мой код первого в яваскрипте функции:Функция Javascript не возвращает значение CSHTML

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()); даже не всплывать, но я знаю, что эта функция вызывается, потому что тревога в яваскрипте функции действительно обнаруживается. Пожалуйста, помоги мне, поэтому я могу перестать биться головой о мой стол! :)

Есть на самом деле 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() отлично работает по какой-то причине.

+0

проверьте свою консоль (F12 в браузере) и опубликуйте, какие ошибки вы получите, если они есть. – Banana

+0

Я думал, что не получаю сообщение об ошибке, но, по некоторым причинам, он просто исчезает через менее чем одну секунду. В нем говорится: «Элемент не найден» – mgrenier

+0

Можете ли вы определить линию, которая выдает ошибку? откройте «console.log» («1/2/3/etc ...») 'здесь и там и посмотрите, между какими журналами появляется ошибка. или отладить его и перейти по строке – Banana

ответ

0

Кажется, что было 2 проблемы, один мой 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> 

Не самый чистый способ сделать это, но это, казалось, единственное, что будет работать, и мне нужно двигаться дальше.

Смежные вопросы