Я использую шаблон Multi страницы (все страницы и javascriot в одном html-файле). Я просто перестроить свою JQuery мобильных приложений:JavaScript не работает после аутсорсинга
Перед: все JavaSripts в HTML файл, например:
<div data-role="page>.....<script></script> </div>
- Сейчас: все JavaScripts поручаются в отдельном файле. Но теперь приходит проблему:
Я ищу после адреса на одной странице. Каждый результат хранится в истории (localStorage). Таким образом, пользователь может использовать поиск или нажать на результаты поиска старой истории.
Поскольку я передал сценарий для этой страницы, история не работает. Я покажу вам рабочий код и рабочий код:
Рабочий код - pre outsourced: Этот код работает. JavaScript в странице DIV:
<div data-role="page" id="searchPage" class="bg-light">
<div data-role="content">
<div id="content-search">
<p><input type="text" name="address" id="address" class="stored" value="" /></p>
<p><input type="submit" id="submitAddress" value="Search" data-theme="a" data-corners="false" /></p>
</div>
<div id="searchHistory">
<div class="ui-corner-all custom-corners">
<div class="ui-bar ui-bar-c">
<h3>History:</h3>
</div>
<div class="ui-body ui-body-c">
<div id="lastResults" class="ui-body ui-body-c ui-corner-all"></div>
</div>
</div>
</div>
</div>
<script>
......
// check and show previous results in **lastResults** div
if (localStorage.getItem("history") != null) {
var historyTemp = localStorage.getItem("history");
var oldhistoryarray = historyTemp.split("|");
oldhistoryarray.reverse();
$("#lastResults").empty();
jQuery.each(oldhistoryarray, function(i, val) {
$("#lastResults").append(
"<ul data-role=\"listview\" data-inset=\"true\" >" +
// store history in localStorage
"<li><a href=\"#mapPage\" onClick=\"getHistory("+i+");\" >"+oldhistoryarray[i]+"</a></li>" +
"</ul>"
);
// max. history
if (i==3) {
return false;
}
});
} else {
// hide search history
console.log("no history");
$("#searchHistory").hide();
}
function getHistory(i){
localStorage.setItem('address', oldhistoryarray[i]);
}
</script>
</div>
не работает код - JS внешний подряд в собственном файле: JavaScript в настоящее время в отдельном файле (function.js): index.html: подробно код см.выше
<div data-role="page" id="searchPage" class="bg-light">
<div data-role="content">
</div>
<script></script>
</div>
function.js:
// check and show previous results in **lastResults** div
if (localStorage.getItem("history") != null) {
var historyTemp = localStorage.getItem("history");
var oldhistoryarray = historyTemp.split("|");
oldhistoryarray.reverse();
$("#lastResults").empty();
jQuery.each(oldhistoryarray, function(i, val) {
$("#lastResults").append(
"<ul data-role=\"listview\" data-inset=\"true\" >" +
// store history in localStorage
"<li><a href=\"#mapPage\" onClick=\"getHistory("+i+");\" >"+oldhistoryarray[i]+"</a></li>" +
"</ul>"
);
// max. history
if (i==3) {
return false;
}
});
} else {
// hide search history
console.log("no history");
$("#searchHistory").hide();
}
function getHistory(i){
localStorage.setItem('address', oldhistoryarray[i]);
}
Я не думаю, что «аутсорсинг» означает то, что вы думаете, что это значит. – Saravana
Куда вы включили файл 'function.js'? – Saravana
вы должны обернуть код в '$ (document) .on (« pageinit », function' или любое событие страницы. – Omar