Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Выполняет и If и Else одновременно (https://javascript.ru/forum/project/40932-vypolnyaet-i-if-i-else-odnovremenno.html)

Madrabit 24.08.2013 22:11

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

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

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


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


На локальной страничке он работает без такого глюка.

ruslan_mart 25.08.2013 07:59

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


Странно, что не работает.

Madrabit 25.08.2013 09:32

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

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

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

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

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

По хорошему, я хотел, чтобы страница проверялась бесконечно, до момента появления нужного мне объекта. Только решил обойтись без while, так как не понял как его увязать с document.ready

ruslan_mart 25.08.2013 09:36

Madrabit, ссылку на сайт.

bes 25.08.2013 11:22

Цитата:

Сообщение от Madrabit
Выполняет и If и Else одновременно

только по названиям тем на этом форуме, давно уже известно, что конструкции javascript не работают ;)

Цитата:

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

а он появится?

Цитата:

Сообщение от Madrabit
Может собака зарыта вот тут? $(document).ready(function()

а может в Tampermonkey
если верить этому http://habrahabr.ru/post/129343/
Цитата:

Все юзерскрипты запускаются после того, как загрузились все основные элементы страницы, но ещё не загрузились картинки. Можно сказать, что юзерскрипты грузятся по событию DOMContentLoaded.
В любом случае, проверки на window.onload не нужны.
хотя нужно читать конкретно по tampermonkey, но это ты сам, не забудь рассказать до чего дочитался

ksa 25.08.2013 12:20

Цитата:

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

По их словам в JS вообще мало чего работоспособно... :lol:

Madrabit 25.08.2013 13:01

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

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

буду копать дальше, раз код корректно работает на локальной странице, то очевидно, что проблема в tampermonkey

l-liava-l 25.08.2013 20:44

Madrabit,
Попробуй window.onload вместо $(document).ready();

Madrabit 26.08.2013 16:14

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

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

bes 26.08.2013 19:35

Цитата:

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


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