2013-06-01 3 views
0

Я пытаюсь получить 2 кнопки для работы. Необходимо сохранить локальное хранилище, а другое - прочитать локальное хранилище. По какой-то причине они все еще не работают. У меня было предупреждение, но теперь это не работает. Для чтения локального хранилища я хотел бы использовать метод jQuery append(). Любые мысли о том, что мне не хватает.html кнопки не работают

скрипт

$(document).ready(function() { 


    function saveLocal(){ 
if (window.localStorage) { 
    localStorage.setItem("firstname","myfirstname"); 
    localStorage.setItem("lastname","mylastname"); 
    localStorage.setItem("state","mystate"); 
    alert("The data has been saved locally."); 
} else { 
    alert("Your Browser does not support LocalStorage."); 
} 
      } 

    function readLocal(){ 
if (window.localStorage) { 
    var firstname = localStorage.getItem("myfirstname"); 
    var lastname = localStorage.getItem("mylastname"); 
    var coursetitle = localStorage.getItem("mystate"); 

    $("#message").empty().append(firstname + " " + lastname + " " + state     ); 
}else { 
    alert("Your Browser does not support LocalStorage."); 
} 
     } 


     }); // end ready 

HTML

 </div> 
     </p> 
     <p> 

    <div id="main"> 
<input type="button" value="Save Values" onclick="saveLocal()"/> 
<input type="button" value="Read Values" onclick="readLocal()"/> 
     </div> 

ответ

6

Не определить функции внутри $(document).ready() обработчика. Имена доступны только внутри области этой функции, поэтому они не могут использоваться в встроенных обработчиках, которые ищут имена в глобальной области.

Единственное, что должно быть внутри этого обработчика - это прямые действия, которые должны выполняться после загрузки документа. Определения функций не нужно так откладывать.

В качестве альтернативы, вместо того, чтобы использовать onclick атрибуты в HTML, вы можете использовать JQuery привязки:

$("#savebutton").click(savelocal); 
$("#readbutton").click(readlocal); 
+0

Нет ничего плохого в определении функций внутри '$ (document) .ready()' рядом с предложенным '.click()' bindings – Ian

+2

Нет ничего плохого с этим, но это не обязательно. И это может вызвать такие проблемы. – Barmar

+0

Если вы правильно привязываете события (например, ваше предложение), проблема также не возникла бы. Возможно, это только я, но мне нравится держать вещи как можно более локальными, чтобы они не загрязняли какой-либо несвязанный объем. – Ian

2

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

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