Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.08.2013, 22:11
Новичок на форуме
Отправить личное сообщение для Madrabit Посмотреть профиль Найти все сообщения от Madrabit
 
Регистрация: 24.08.2013
Сообщений: 4

Выполняет и If и Else одновременно
Подскажите, люди добрые.

Код запускаю через Tampermonkey на чужом сайте.

Он проверяет, что элемент присутствует и выводит сообщение, но почему-то вслед за этим начинает выполнять значение else.


$(document).ready(function(){
    if (document.getElementById("ctl00_ContentMainPage_ctlSeparateProduct_pnlOutofStock") !=null)
    {
        alert("Нет товара");
    }
    else {
        location.reload(true);}
});


На локальной страничке он работает без такого глюка.
Ответить с цитированием
  #2 (permalink)  
Старый 25.08.2013, 07:59
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

$(function() {
   if($('#ctl00_ContentMainPage_ctlSeparateProduct_pnlOutofStock').length) {
      location.reload(true);
   }
   else {
      alert("Нет товара")
   }
});


Странно, что не работает.
Ответить с цитированием
  #3 (permalink)  
Старый 25.08.2013, 09:32
Новичок на форуме
Отправить личное сообщение для Madrabit Посмотреть профиль Найти все сообщения от Madrabit
 
Регистрация: 24.08.2013
Сообщений: 4

Все равно глючит. Даже Ваш код.

Вот с таким значение !=null:
Где есть Id:
1)Один раз выводит alert
2)Уходит в бесконечный цикл рефрешей.

Где нет этого Id:
1)Один раз выводит alert и все

С таким значением ==null:
Где есть ID - выводит алерт, делает рефреш - и так бесконечно
Где нет Id на страничке - вообще ничего не делает.

Может собака зарыта вот тут? $(document).ready(function()
Я ума не приложу, код пишу впервые в жизни.

По хорошему, я хотел, чтобы страница проверялась бесконечно, до момента появления нужного мне объекта. Только решил обойтись без while, так как не понял как его увязать с document.ready
Ответить с цитированием
  #4 (permalink)  
Старый 25.08.2013, 09:36
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Madrabit, ссылку на сайт.
Ответить с цитированием
  #5 (permalink)  
Старый 25.08.2013, 11:22
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Madrabit
Выполняет и If и Else одновременно
только по названиям тем на этом форуме, давно уже известно, что конструкции javascript не работают

Сообщение от Madrabit
я хотел, чтобы страница проверялась бесконечно, до момента появления нужного мне объекта
а он появится?

Сообщение от Madrabit
Может собака зарыта вот тут? $(document).ready(function()
а может в Tampermonkey
если верить этому http://habrahabr.ru/post/129343/
Цитата:
Все юзерскрипты запускаются после того, как загрузились все основные элементы страницы, но ещё не загрузились картинки. Можно сказать, что юзерскрипты грузятся по событию DOMContentLoaded.
В любом случае, проверки на window.onload не нужны.
хотя нужно читать конкретно по tampermonkey, но это ты сам, не забудь рассказать до чего дочитался
Ответить с цитированием
  #6 (permalink)  
Старый 25.08.2013, 12:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от bes
только по названиям тем на этом форуме, давно уже известно, что конструкции javascript не работают
По их словам в JS вообще мало чего работоспособно...
Ответить с цитированием
  #7 (permalink)  
Старый 25.08.2013, 13:01
Новичок на форуме
Отправить личное сообщение для Madrabit Посмотреть профиль Найти все сообщения от Madrabit
 
Регистрация: 24.08.2013
Сообщений: 4

вот страница для которой код

нужный объект появится со временем, когда товар будет в наличии

буду копать дальше, раз код корректно работает на локальной странице, то очевидно, что проблема в tampermonkey
Ответить с цитированием
  #8 (permalink)  
Старый 25.08.2013, 20:44
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Madrabit,
Попробуй window.onload вместо $(document).ready();
__________________
Научу себя плохому
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2013, 16:14
Новичок на форуме
Отправить личное сообщение для Madrabit Посмотреть профиль Найти все сообщения от Madrabit
 
Регистрация: 24.08.2013
Сообщений: 4

Нашел затыку.
if (document.getElementById("ctl00_ContentMainPage_ctlSeparateProduct_pnlOutofStock") !="undefined")

Косяк вышел из-за моего непонимания чем отличаются null от undefined
Ответить с цитированием
  #10 (permalink)  
Старый 26.08.2013, 19:35
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Madrabit
Нашел затыку.
if (document.getElementById("ctl00_ContentMainPage_ct lSeparateProduct_pnlOutofStock") !="undefined")

Косяк вышел из-за моего непонимания чем отличаются null от undefined
тест

<body>
<script>
var some_id = document.getElementById("some_id");
alert(some_id);
if (some_id === null) {
	alert("id is null");
} else {
	alert("id is not null");
}
if (some_id == undefined) {
	alert("id is undefined");
} else {
	alert("id is not undefined");
}
if (some_id == 'undefined') {
	alert("id is 'undefined'");
} else {
	alert("id is not 'undefined'");
}
</script>

читать, как минимум, отсюда http://es5.javascript.ru/x12.html#x12.5
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$ animate одновременно все элементы набора Esigns Общие вопросы Javascript 4 08.08.2013 11:26
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Два слайдера на странице с одинаковыми классами работают одновременно. SlafkoCe jQuery 4 14.12.2012 12:44
Cкрипт menu не работает одновременно со скриптом slide Greenex Работа 1 24.03.2011 02:28
Можно ли одновременно изменить фон и текст в поле? Bad Request Events/DOM/Window 12 25.09.2008 23:10