2014-12-03 2 views
0

Извините, я не мог подробно рассказать о своей проблеме, но я не вижу никаких проблем. две функции save() и load() запустить OnClickЛокальное хранилище Не работает? Не знаю, почему

<button onclick="save()">save</button> 
<button onclick="load()">load</button> 

Код в виду, чтобы захватить значение всех входов и save его в локальном хранилище. затем на load Добавить сохраненные данные обратно в форму Поля

Я новичок в php и JavaScript, так что это может выглядеть немного грязно, но это потому, что я «сгенерирую» это через php-массив и цикл (изменения массива в зависимости от варианта с выбрана)

// сохранить

function save() { 
if (typeof(Storage) != "undefined") { 
     var seometatitle = document.getElementById("seo_meta_title").value; 
      saveData(seometatitle); 

     function saveData(xseometatitle) { 
       localStorage.setItem("seometatitle", xseometatitle); 
     } 
    } 

     var seometadescription = document.getElementById("seo_meta_description").value; 
      saveData(seometadescription); 

     function saveData(xseometadescription) { 
      localStorage.setItem("seometadescription", xseometadescription); 
     } 
    } 

     var header = document.getElementById("header").value; 
      saveData(header); 

     function saveData(xheader) { 
      localStorage.setItem("header", xheader); 
     } 
    } 

     var pagetext = document.getElementById("page_text").value; 
      saveData(pagetext); 

     function saveData(xpagetext) { 
      localStorage.setItem("pagetext", xpagetext); 
     } 
    } 

     var linkurl = document.getElementById("link_url").value; 
      saveData(linkurl); 

     function saveData(xlinkurl) { 
      localStorage.setItem("linkurl", xlinkurl); 
     } 
    } 

     var buttontext = document.getElementById("button_text").value; 
      saveData(buttontext); 

     function saveData(xbuttontext) { 
      localStorage.setItem("buttontext", xbuttontext); 
     } 
    } 
}} //end 

// загружаем

function load() { 
if (typeof(Storage) != "undefined") { 
document.getElementById("seo_meta_title").value = localStorage.getItem("seometatitle"); 
document.getElementById("seo_meta_description").value = localStorage.getItem("seometadescription"); 
document.getElementById("header").value = localStorage.getItem("header"); 
document.getElementById("page_text").value = localStorage.getItem("pagetext"); 
document.getElementById("link_url").value = localStorage.getItem("linkurl"); 
document.getElementById("button_text").value = localStorage.getItem("buttontext"); 
}} 

Только ради этого здесь есть PHP для Gener ел save function

$arrlength = count($matches[0]); # Get how many items in array two. 
for($x = 0; $x < $arrlength; $x++) { #counting 
    $place_name = str_replace ("_" , "" , $matches[0][$x]); #Create readible name _ to space. 
    echo 'var ' .$place_name. ' = document.getElementById('.'"'.$matches[0][$x].'"'.').value;'; 

     echo "\n"; 
     echo 'saveData('.$place_name.');'; 
     echo "\n"; 
     echo 'function saveData(x'.$place_name.') {'; 
     echo "\n"; 
     echo 'localStorage.setItem("'.$place_name.'", x'.$place_name.');'; 
     echo "\n"; 
     echo '}}'; 
     echo "\n"; 

А вот PHP для load function

$arrlength = count($matches[0]); # Get how many items in array two. 
for($x = 0; $x < $arrlength; $x++) { #counting 
    $place_name = str_replace ("_" , "" , $matches[0][$x]); #Create readible name _ to space. 
    // Retrieve 
    echo 'document.getElementById("'.$matches[0][$x].'").value = localStorage.getItem("'.$place_name.'");'; 
    echo "\n"; } 

Решетки он использует есть, его производится автоматически путем захвата {placeholder} образует .html файла держатели места изменяется в зависимости от HTML файл

array(1) { 
    [0]=> array(6) { 
    [0]=> string(12) "placeholders" 
    [1]=> string(15) "page_meta_title" 
    [2]=> string(6) "header" 
    [3]=> string(9) "page_text" 
    [4]=> string(8) "link_url" 
    [5]=> string(11) "button_text" } 
    } 
    } 

Любая помощь была бы принята с благодарностью! Спасибо за ваше время.

+1

Пожалуйста, правильно отпечатайте свой код, чтобы сделать его доступным для чтения. – jfriend00

ответ

0

У вас есть несколько определений той же функции. Только последнее определение будет действовать. Весь ваш javascript анализируется до того, как он будет запущен. Итак, все определения saveData() разобраны, и только последний активен, когда вы пытаетесь вызвать его несколько раз. Таким образом, выполняется только последний.

Трудно прочитать ваш код или понять свои намерения без отступов кода, но вы, вероятно, должны иметь одну функцию saveData() и одну функцию loadData() и просто называть их несколько раз, каждый раз с разными аргументами.

Я бы рекомендовал вам написать свой код javascript вручную, а затем сгенерировать структуры данных с помощью PHP, которые может использовать код Javascript, а не генерировать код Javascript.

+0

Спасибо за ответ, и да, это была проблема, которую я получал. поэтому в этом примере, если я изменил 'saveData()' на ''saveData'. $ place_name. '()'' и то же самое на loadData, он должен работать? я попытаюсь закодировать его в JavaScript, а преобразование массива на самом деле не работает, поэтому я изменил этот метод. Благодаря кучам –

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