Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка при нажатии на ссылку (https://javascript.ru/forum/misc/55791-obrabotka-pri-nazhatii-na-ssylku.html)

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
Как реализовать при перезагрузке что бы выводилась последняя нажатая ссылка?

Как вариант, хранить где-то, что загружалось последним... После перезагрузки считывать эту информацию и загружать нужное...

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

Sn9 14.05.2015 14:41

Цитата:

Сообщение от ksa
Как вариант, хранить где-то, что загружалось последним

Подскажите хотя бы примером, а то JS вообще не понимаю, вот уже 2ой день сижу с данной проблемой
С говнокодом - согласен

ksa 14.05.2015 14:49

Цитата:

Сообщение от Sn9
а то JS вообще не понимаю

Тогда смысл объяснять?

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

Sn9 14.05.2015 14:57

Цитата:

Сообщение от ksa
Тогда смысл объяснять?

Просто я по 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

Цитата:

Сообщение от Sn9
Просто я по PHP

Как вариант в сессию записывай нужное состояние... Потом это используй.

laimas 14.05.2015 15:20

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

ksa 14.05.2015 15:24

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

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

ksa 14.05.2015 15:27

Цитата:

Сообщение от Sn9
никто не может хотя бы примера показать по данному коду

Вот пример с локалсторадж...
http://javascript.ru/forum/jquery/55...tml#post370808

Sn9 14.05.2015 15:52

Цитата:

Сообщение от ksa
Вот пример с локалсторадж...

Вот так будет корректно?
<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

Цитата:

Сообщение от Sn9
Вот так будет корректно?

Что-то туго пока идет... :(

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

<!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

Цитата:

Сообщение от ksa
Так вот понятно будет?

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

laimas 14.05.2015 19:21

Цитата:

Сообщение от Rise
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

Цитата:

Сообщение от Sn9
когда меняю текст внутри href, то сразу всё ломается. Есть какой то способ изменить текст на нужный?

Тут опять не понятно, что ты делаешь и, что ломается...


Часовой пояс GMT +3, время: 18:53.