Вход

Просмотр полной версии : Проблема с if и cookie


The_FactioN
07.06.2011, 20:58
Вообщем у меня есть код,Часть его работы составляет сохрание в куки различные значения(id1,id2,id3)
Потом я создал проверку(if,else) при которой он проверяет если cоздана кука с таким то значением,то он присваивает какой то стиль какому либо объекту.Вот код

<script type="text/javascript">
$(document).ready(function() {
Вот тут часть кода не относящаяся к вопросу
var id = $(this).attr('id');
$.cookie(''+ id, ''+ id, { expires: 365 });
});
var Cook = $.cookie(''+ id)
if (Cook == '' + id) {
$('body').css("display", "none");
};
});

</script>


Теперь обясню суть.При клике на какой то код,мы узнаеём его id var id = $(this).attr('id');в куки сохраняется его id$.cookie(''+ id, ''+ id, { expires: 365 });Потом создаём переменнeю var Cook = $.cookie(''+ id)Далее идёт проверка
if (Cook == '' + id) {
$('body').css("display", "none");
};
И вот эта проверка не правельная.Если я напишу примерно так

if (Cook == id4) {
$('body').css("display", "none");
};
то всё работает,хотя мне нужно что бы эта проверка работаля для всех заданных элементо.Вроде описал суть(надо отредактировать if)Если что опишу по подробнее)
P.S простите за орфографические ошибки,пишу в темноте

evgh
07.06.2011, 21:29
не понял в чём суть.

но и вопрос появился: '' + id что это такое?
(что сделает скрипт я знаю, но смысл не улавливаю)

"При клике на какой то код", кликай не на код, кликай на элементы))

я в jQuery плохо разбираюсь, но разве $(document).ready(function() { это не "брат" onload-a ?
или событие onclick не требуется "При клике на какой то код"

monolithed
07.06.2011, 21:39
if (Cook == '' + id) {
if (Cook == id4) {
почему условия разные?
f(Cook == (id+4))

The_FactioN
07.06.2011, 21:50
Вы не поняли суть.Ну вот у меня есть 5 блоков.При клике на каждый,в куки сохраняется их id/Далее при помощи if мы узнаём,если в куках есть id какого либо блока,то он закрывает его(просто код который выложил выше чуть изменён.)И вот этот if не правельно записан,нужна ваша помощь,я просто не стал целый код вылаживать а только ту часть,где ошибка..

evgh
07.06.2011, 22:24
да поняли мы суть, просто хотели верить что не поняли :D

При клике на каждый
в представленном выше коде есть событие для ловли клика? тыкни меня в него носом.

и жди следующего посетителя который спроси что это за фигня '' + id

1) проверь '' + id в куки записывается?
2) проверь что именно записано в куках.
и если там тоже что ты проверяешь/сравниваешь через if то тогда будет дальше гадать

The_FactioN
08.06.2011, 07:13
evgh,
Я не показал Вам часть кода для клика
''+id-в куки сохраняется id блока.Я могу записать чтото типа токого
'cookie'+id и в куках будет например cookieid5 но мне не нужны лишние слова в куках,поэтому я ставлю пустые кавычки и в куки сохраняется то ,что мне нужно.Но вот if функция с переменной не робит.Если бы я поставил конкретное значение куик тогра работало,но мне нужно что бы if выслеживал каждый кука не один только.

evgh
08.06.2011, 12:19
но мне не нужны лишние слова в куках,поэтому я ставлю пустые кавычки

пустые кавычки ничего не передают, потому что они пустые, так что незачем их ставить.

2) проверь что именно записано в куках.

проверил? какие данные там хранятся.

The_FactioN
08.06.2011, 13:23
evgh,
Говорю же..id1 id2 id3 id4 id5 и тд,смотря на какой блок нажать

evgh
08.06.2011, 14:01
если после кликанья по элементам, в куках оказываются все их айди, то if должен правильно срабатывать, или ты чего-то не договариваешь.

а собственно зачем проверка?
если присмотреться к коду в первом посте, то ты
1) получаешь айди
2) запихиваешь айди в куки
3) проверяешь есть ли там только что запихнутый айди
4) скрываешь элемент

3 пункт можно убрать, и проблема с проверкой исчезнет....хотя и так мне не понятно почему существует.

самое простое что можно предположить что айди элемента не "схожи" с айди которые в куках

evgh
08.06.2011, 14:02
неужели процессор забыл как сравнивать строки :blink:

The_FactioN
08.06.2011, 15:06
evgh,
Ну вот смотри.
Вот код с переменной и alert
[JS] <script type="text/javascript">
$(document).ready(function() {
$('.close').click(function() {
var id = 'fffff'
alert(''+id);
};
});

</script> [/LS]
При клике на .closе вылазит окно и переменной(видите как её нужно написать в alert?)Так вот и с if я так же написал и тоже не пашет

evgh
08.06.2011, 16:40
видите как её нужно написать в alert?нет, не вижу, покажи :(

alert(''+id); или alert(id); одна хр*нь!

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

evgh
08.06.2011, 16:48
function ff()
{
var id="123";
if(id == ''+id) alert(''+id+' с дуростью');
if(id == id) alert(id+' без дурости');
}оба варианта работают на ура