Вход

Просмотр полной версии : Обработка при нажатии на ссылку


Sn9
14.05.2015, 14:25
Есть страница run.php. На ней имеется ряд ссылок.

<a href="" id="d1">1</a>
<a href="" id="d2">2</a>
<a href="" id="d3">3</a>
<a href="" id="d4">4</a>


Ссылки открывают эту же страницу, через скрипт, который берет инфу с другой страницы
$( function ready() {
$('.all').load( "all.php #infa2");
$('#d1').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa1");});
$('#d2').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa2");} );
$('#d3').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa3");} );
$('#d4').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa4");} );
});//END
При перезагрузке страницы нужно заново нажимать на эти ссылки
Как реализовать при перезагрузке что бы выводилась последняя нажатая ссылка?

ksa
14.05.2015, 14:34
Как реализовать при перезагрузке что бы выводилась последняя нажатая ссылка?
Как вариант, хранить где-то, что загружалось последним... После перезагрузки считывать эту информацию и загружать нужное...

И переписать таки сей говнокод. ;)

Sn9
14.05.2015, 14:41
Как вариант, хранить где-то, что загружалось последним
Подскажите хотя бы примером, а то JS вообще не понимаю, вот уже 2ой день сижу с данной проблемой
С говнокодом - согласен

ksa
14.05.2015, 14:49
а то JS вообще не понимаю
Тогда смысл объяснять?

Попытка №1
http://htmlbook.ru/html5/storage
http://ruseller.com/lessons.php?id=593

Sn9
14.05.2015, 14:57
Тогда смысл объяснять?
Просто я по PHP,а тут такая задача оказалась, никто не может хотя бы примера показать по данному коду

Sn9
14.05.2015, 15:00
Ну на сколько я понял, то при клике по первой ссылке будет записываться куки таким образом $('#d1').click(function (eventObject) {document.cookie = "1";
var one = get_cookie ( "1" );

eventObject.preventDefault();

$('.all').load("all.php #infa1");
});

А вот как потом вывести нужную?

ksa
14.05.2015, 15:19
Просто я по PHP
Как вариант в сессию записывай нужное состояние... Потом это используй.

laimas
14.05.2015, 15:20
document.cookie = "1"; - это означает установку временной куки, которая не будет сохраняться в браузере, то есть ушли со страницы и кука умерла.

ksa
14.05.2015, 15:24
Sn9, по ссылкам, что я дал выше, все описано. Как "записать"... Как "прочитать"...

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

ksa
14.05.2015, 15:27
никто не может хотя бы примера показать по данному коду
Вот пример с локалсторадж...
http://javascript.ru/forum/jquery/55740-zapominanie-stilya-knopok-bootstrap-3-v-cookie-2.html#post370808

Sn9
14.05.2015, 15:52
Вот пример с локалсторадж...
Вот так будет корректно?

<a href="" id="d1">ПЕРВАЯ</a>
<script type='text/javascript'>
$(function()
{
$('#d1').click(function (eventObject) { //при клике на ссылку
eventObject.preventDefault();
$('.all').load("all.php #infa1");
var one = "$('.all').load( "all.php #infa1")"; //запишется в переменную one текст
localStorage.setItem("all", one); //запишется в localStorage ключ all со значением из one
});

var oneL = localStorage.getItem("all"); //возмется ключ all и присвоется в oneL
alert(oneL); //должно вывести что находится в oneL
});
</script>


Или подскажите как правильно заэкранировать в 8ой строке

Sn9
14.05.2015, 16:25
Сделал так, по логике должно при клике на первую ссылку вместо oneL выводиться строка которую я записал в локалсторадж после перезагрузки страницы, но почему то не выводит, хотя если через alert пробовать, то выводит строку


<a href="" id="d1">один</a>
<a href="" id="d2">два</a>
<a href="" id="d3">три</a>
<a href="" id="d4">четыре</a>
<script type='text/javascript'>

$(function one() {
$('#d1').click(function (eventObject) { //при клике на ссылку
eventObject.preventDefault();
$('.all').load("all.php #infa1");
var one = ' $(\'.all\').load( "all.php #infa1"); '; //запишется в переменную one текст
localStorage.setItem("one", one); //запишется в localStorage ключ all со значением из one
});
var oneL = localStorage.getItem("one");

$( function ready() {

oneL;
$('#d1').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa1");} );
$('#d2').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa2");} );
$('#d3').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa3");} );
$('#d4').click( function(eventObject) {eventObject.preventDefault();$('.all').load( "all.php #infa4");} );
});//END
});



</script>

<div class="all"></div>

ksa
14.05.2015, 16:47
Вот так будет корректно?
Что-то туго пока идет... :(

Так вот понятно будет?

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
var url=localStorage.getItem("url")||"all.php";
$('#info').text(url);
$('.test').click(function() {
var url="all.php #infa"+$(this).text();
$('#info').text(url);
localStorage.setItem("url", url);
});
});
</script>
</head>
<body>
<a href="" id="d1" class='test'>1</a>
<a href="" id="d2" class='test'>2</a>
<a href="" id="d3" class='test'>3</a>
<a href="" id="d4" class='test'>4</a>
<div id="info"></div>
</body>
</html>

Sn9
14.05.2015, 18:06
Так вот понятно будет?
Благодарю, всё получилось как нужно
Но теперь возник еще один вопрос, я когда меняю текст внутри href, то сразу всё ломается. Есть какой то способ изменить текст на нужный?

laimas
14.05.2015, 19:21
switch ($_GET['info']) {
case 1:
$_SESSION['info'] = 1;
echo 'Текст 1';
В данном случае switch не нужен.

laimas
14.05.2015, 20:05
НУ смотрите сами - значение переданного это номер, и он же определяет сообщение, ну так выгоднее сразу

$_SESSION['info'] = $_GET['info'];
и
echo $message[$_GET['info']];

laimas
14.05.2015, 21:07
Ну так в этом случае ваш пример явно неудачный, ибо зачем же switch, если case 1 при $_SESSION['info'] = 1? Кроме того, если значения произвольные, то каким образом выкрутиться и в switch, ведь и для нее это будет проблемой.

laimas
15.05.2015, 05:46
Ну так извините, и кличи массива могут иметь имена произвольные. Суть не в этом. Что в вашем примере? А в нем явно ожидаемые значения, которые и проверяются, то есть 1, 2, 3. Вопрос встал о том, что если значения изменяться или дополняться (я правильно понял?), то case ну как волшебник, сам их подставить что-ли? Понятно что нет, и что их придется писать ручками, ну и какая разница, если я добавлю в массив ключи новые?
Что switch, что ключи в массиве, это приемлемо только для ожидаемых фиксированных значений. Удобство чего-то там разместить, это уже прострация, мы говорим о простом, что было показано, и для него switch, это лишнее. Что касается default, то в случае использования массива, потребуется проверка - если есть ключ, исполняем, иначе по умолчанию.

ksa
15.05.2015, 08:56
когда меняю текст внутри href, то сразу всё ломается. Есть какой то способ изменить текст на нужный?
Тут опять не понятно, что ты делаешь и, что ломается...