Помогите отладить скрипт...

Делаю скрипт- автомат для игры, он почти рабочий уже, но в одном месте о как бы "запинается". Вот кусочек скрипта.. Подскажите, пожалуйста, что можно сделать?

Помогите отладить скрипт...

» » Сообщение:

Подскажите пожалуйста!
Делаю скрипт- автомат для игры, он почти рабочий уже, но в одном месте о как бы "запинается".
Вот кусочек скрипта:

Код: Выделить всё Развернуть
function fill()

{

for (var i=0;i<document.links.length;i++)

{

if (document.links[i].text.match("кнопка1")){but1=document.links[i].href;}

if (document.links[i].text.match("кнопка2")){but2=document.links[i].href;}

if (document.links[i].text.match("кнопка3")){but3=document.links[i].href;}

Так вот, запинается на третьей кнопке.
При инспекции страницы заметил что первая и вторая кнопки выглядят так:

Код: Выделить всё Развернуть
<a href="-----">кнопка1</a>

а третья заключена тегами "span":

Код: Выделить всё Развернуть
<a href="-----">
<span>кнопка3</span>
</a>

Я так понял что именно тег "span" и мешает.
Подскажите, пожалуйста, что можно сделать?
(Просьба сильно не пинать, первые шаги в скриптописании)

document, links, код, match, подскажите

Re: Помогите отладить скрипт...

Admin » » Сообщение:

Стаканыч,

Стаканыч писал(а) › 09.03.2016, 17:34:Делаю скрипт- автомат для игры, он почти рабочий уже, но в одном месте о как бы "запинается"... Так вот, запинается на третьей кнопке.

Почему вы так решили?
Попробуйте проверять вхождение так:

Код: Выделить всё Развернуть
if (document.links[i].text.indexOf('кнопка3')!=-1){ ...
Стаканыч писал(а) › 09.03.2016, 17:34:Я так понял что именно тег "span" и мешает.
Подскажите, пожалуйста, что можно сделать?

Неплохо было бы посмотреть тот фрагмент, который формирует эти кнопки.. или они статичные?

ps
А вообще, сама функция .. не особо ровная. Я бы написал так:

Код: Выделить всё Развернуть
function fill(){
var a = document.getElementsByTagName('a');
   for (var i=0,j=a.length;i<j;i++){
      var e=a[i];
      if (e.innerHTML.indexOf('кнопка1')!=-1){but1=e.href;}
   }
}

Однако, из вашего фрагмента непонятно, куда ссылается переменная but1.. Или она глобальная?
Если так, думаю, вам стоит пересмотреть структуру скрипта..
Типа:

Код: Выделить всё Развернуть
function fill(){
var a = document.getElementsByTagName('a'),but=[];
   for (var i=0,j=a.length;i<j;i++){
      var e=a[i];
      if (e.innerHTML.indexOf('кнопка1')!=-1){but[1]=e.href;}
      if (e.innerHTML.indexOf('кнопка2')!=-1){but[2]=e.href;}
   }
   return but;
}
// var but = fill();
// alert(but[1]); // ссылка 1
// alert(but[2]); // ссылка 2

Re: Помогите отладить скрипт...

Гость » » Сообщение:

Спасибо! Пытаюсь разобраться.

Admin писал(а) › 09.03.2016, 20:09:почти рабочий уже, но в одном месте о как бы "запинается"... Так вот, запинается на третьей кнопке.
Почему вы так решили?

Скрипт работает, но на третьей кнопке переходит на первую. Вот скрипт:

script Код: Выделить всё Развернуть
function(){
{
var pit=zab=vir=shel=och=da="";
var cd=Math.random()*(6000 - 5000)+5000;
var cd_re=Math.random()*(6000 - 5000)+5000;
}
{
fill(); select();
}
function fill()
{
for (var i=0;i<document.links.length;i++)
{
if (document.links[i].text.match("Питомник")){pit=document.links[i].href;}
if (document.links[i].text.match("Забрать детеныша")){zab=document.links[i].href;}
if (document.links[i].text.match("Выращивать животное")){vir=document.links[i].href;}
if (document.links[i].text.match("Шелкопряд")){shel=document.links[i].href;}
if (document.links[i].text.match("Очистить все вольеры")){och=document.links[i].href;}
if (document.links[i].text.match("Да, подтверждаю")){da=document.links[i].href;}
if (document.links[i].text.match("Обновить")){refresh=document.links[i].href;}
}
}
function select()
{
if (pit!=''){setTimeout(function(){location.href=pit},cd);return}
else if (zab!=''){setTimeout(function(){location.href=zab},cd);return}
else if (vir!=''){setTimeout(function(){location.href=vir},cd);return}
else if (shel!=''){setTimeout(function(){location.href=shel},cd);return}
else if (och!=''){setTimeout(function(){location.href=och},cd);return}
else if (da!=''){setTimeout(function(){location.href=da},cd);return}
else if(document.evaluate("//ul[@class='block']/li[1]/span[@class='title']", document, null, 9, null).singleNodeValue!=null){setTimeout(function(){location.href="/mynursery"},cd);return}
else if (refresh!=''){setTimeout(function(){location.href=refresh},cd_re);return}
}
})();

Re: Помогите отладить скрипт...

Admin » » Сообщение:

Гость

Гость писал(а) › 11.03.2016, 15:33:но на третьей кнопке переходит на первую

В общем, попробуйте проверять вхождение так:

Код: Выделить всё Развернуть
if (document.links[i].innerHTML.indexOf('Питомник')!=-1){pit=document.links[i].href;}

Думаю в этом дело.


Re: Помогите отладить скрипт...

Гость » » Сообщение:

Вот фрагмент страницы:

html Код: Выделить всё Развернуть
<div style="clear: both;"></div>
</li><li>
<img src="/images/nursery/shelkopryad.png" alt="*" width="48" height="48" class="portrait"/>
<div><a href="mynursery/action/putToCell/cid/0/aid/1"><span>Шелкопряд</span></a> </div>
<div class="small minor">Растет <span class="title">10 минут</span>, дает <span class="title">1 очко</span>.</div>

Здесь слово "Шелкопряд" вставлено в теги span, и это слово скрипт не видит. На других страницах этих тегов нет и скрипт работает нормально:

html Код: Выделить всё Развернуть
<li>
<img width="16" height="16" src="/images/icons/new/nursery.png" alt="o"/>
<a href="mynursery">Питомник</a>

Re: Помогите отладить скрипт...

Гость » » Сообщение:

Admin писал(а) › 11.03.2016, 18:31:if (document.links[i].innerHTML.indexOf('Питомник')!=-1){pit=document.links[i].href;}

Этим способом вообще не получается. Может я где ошибся. Проверяю.


Re: Помогите отладить скрипт...

Admin » » Сообщение:

Гость писал(а) › 18.03.2016, 17:45:Этим способом вообще не получается.

У вас то, где вы проверяете в сети или на компе?
Есть целиком страница со скриптом?
Ибо:

Код: Выделить всё Развернуть
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>

<body>
<a href="mynursery/action/putToCell/cid/0/aid/1"><span>Шелкопряд</span></a>
<script type="text/javascript">
function fill(){
var a = document.getElementsByTagName('a'),but=[];
   for (var i=0,j=a.length;i<j;i++){
      var e=a[i];
      if (e.innerHTML.indexOf('Шелкопряд')!=-1){but[1]=e.href;}
      if (e.innerHTML.indexOf('кнопка2')!=-1){but[2]=e.href;}
   }
   return but;
}
alert(fill()); // ,http://likbezz.nets/mynursery/action/putToCell/cid/0/aid/1
</script>
</body>
</html>

Re: Помогите отладить скрипт...

Гость » » Сообщение:

Сейчас попытаюсь объяснить. Есть файл скрипта с расширением .js, он у меня на компе. Суть его в переходе по ссылкам через определённое время. Вот скрипт полностью:

script Код: Выделить всё Развернуть
// @include https://odkl.kolhoz.mobi/*
(
function(){
{
var pit=zab=vir=shel=och=tick=refresh="";
var cd=Math.random()*(4000 - 3000)+5000;
var cd_re=Math.random()*(600 - 500)+600000;
}
{
fill(); select();
}
function fill()
{
for (var i=0;i<document.links.length;i++)
{
if (document.links[i].text.match("Питомник")){pit=document.links[i].href;}
if (document.links[i].text.match("Забрать детеныша")){zab=document.links[i].href;}
if (document.links[i].text.match("Выращивать животное")){vir=document.links[i].href;}
if (document.links[i].text.match("Шелкопряд")){shel=document.links[i].href;}
if (document.links[i].text.match("Очистить все вольеры")){och=document.links[i].href;}
if (document.links[i].text.match("Да, подтверждаю")){tick=document.links[i].href;}
if (document.links[i].text.match("Обновить")){refresh=document.links[i].href;}
}
}
function select()
{
if (pit!=''){setTimeout(function(){location.href=pit},cd);return}
else if (zab!=''){setTimeout(function(){location.href=zab},cd);return}
else if (vir!=''){setTimeout(function(){location.href=vir},cd);return}
else if (shel!=''){setTimeout(function(){location.href=shel},cd);return}
else if (och!=''){setTimeout(function(){location.href=och},cd);return}
else if (tick!=''){setTimeout(function(){location.href=tick},cd);return}
else if (refresh!=''){setTimeout(function(){location.href=refresh},cd_re);return}
}
})();

Проверяю его работу в он-лайн игре.Работает, но в двух местах не читает текст и идёт дальше. Вот я и не могу понять, почему он не видит этот текст.


Re: Помогите отладить скрипт...

Admin » » Сообщение:

У меня работает:

Код: Выделить всё Развернуть
<body>
<a href="mynursery/action/putToCell/cid/0/aid/1"><span>Шелкопряд</span></a><br />
<a href="Питомник"><span>Питомник</span></a><br />
<a href="Забрать детеныша"><span>Забрать детеныша</span></a><br />
<a href="Выращивать животное"><span>Выращивать животное</span></a><br />
<a href="Очистить все вольеры"><span>Очистить все вольеры</span></a><br />
<a href="Да, подтверждаю"><span>Да, подтверждаю</span></a><br />
<a href="Обновить"><span>Обновить</span></a><br />

<script type="text/javascript">
(
function(){
{
var pit=zab=vir=shel=och=tick=refresh="";
var cd=Math.random()*(4000 - 3000)+5000;
var cd_re=Math.random()*(600 - 500)+600000;
}
{
fill(); select();
}
function fill()
{
for (var i=0;i<document.links.length;i++)
{
if (document.links[i].text.match("Питомник")){pit=document.links[i].href;}
if (document.links[i].text.match("Забрать детеныша")){zab=document.links[i].href;}
if (document.links[i].text.match("Выращивать животное")){vir=document.links[i].href;}
if (document.links[i].text.match("Шелкопряд")){shel=document.links[i].href;}
if (document.links[i].text.match("Очистить все вольеры")){och=document.links[i].href;}
if (document.links[i].text.match("Да, подтверждаю")){tick=document.links[i].href;}
if (document.links[i].text.match("Обновить")){refresh=document.links[i].href;}
}
}
function select()
{
if (pit!=''){setTimeout(function(){location.href=pit},cd);return}
else if (zab!=''){setTimeout(function(){location.href=zab},cd);return}
else if (vir!=''){setTimeout(function(){location.href=vir},cd);return}
else if (shel!=''){setTimeout(function(){location.href=shel},cd);return}
else if (och!=''){setTimeout(function(){location.href=och},cd);return}
else if (tick!=''){setTimeout(function(){location.href=tick},cd);return}
else if (refresh!=''){setTimeout(function(){location.href=refresh},cd_re);return}
}
})();
</script>
</body>

Re: Помогите отладить скрипт...

rons » » Сообщение:

Приветствую. Просьба подсказать.
Есть колонки:

Код: Выделить всё Развернуть
<div class="collect">
<span class="rol"></span>
<div class="num"></div>
</div>


<div class="collect">
<span class="rol"></span>
<div class="num"></div>
</div>


<div class="collect">
<span class="rol"></span>
<div class="num"></div>
</div>

и скрипт

Код: Выделить всё Развернуть
 $(".num").hover(
       function () { $(".rol").addClass("active") },  //при наведении курсора на элемент
       function () { $(".rol").removeClass("active") } //при уводе курсора с элемента
    );

При наведении на класс "num" мышкой, ко всем классам "rol" добавляется класс "active"
Что нужно изменить в скрипте чтоб класс "active" добавлялся только к "rol" той колонки, над которой находится мышка.


Re: Помогите отладить скрипт...

Admin » » Сообщение:

rons писал(а) › 26.04.2016, 01:59:При наведении на класс "num" мышкой, ко всем классам "rol" добавляется класс "active"
Что нужно изменить в скрипте чтоб класс "active" добавлялся только к "rol" той колонки, над которой находится мышка.

Так:

Код: Выделить всё Развернуть
$(".num").hover(
       function () { $('.rol',this.parentNode).addClass("active") },  //при наведении курсора на элемент
       function () { $('.rol',this.parentNode).removeClass("active") } //при уводе курсора с элемента
);

или так:

Код: Выделить всё Развернуть
$(".num").hover(
       function () { $('.rol',$(this).closest('.collect')).addClass("active") },  //при наведении курсора на элемент
       function () { $('.rol',$(this).closest('.collect')).removeClass("active") } //при уводе курсора с элемента
);

- если предполагаются еще элементы между num и rol.



Re: Помогите отладить скрипт...

rons » » Сообщение:

Admin
Не получается решить еще такую задачу:
есть текст :

Код: Выделить всё Развернуть
<div class="mes">Вместе с останками флоресских людей были <br> найдены примитивные каменные орудия, обожжённые животных и прочие следы материальной культуры.</div>

Нужно перед словом "животных" вставить <div class="foo">кости</div>

Код: Выделить всё Развернуть
$('.mes').text('животных').before('<div class="foo">кости</div>');

Так не получается..


Re: Помогите отладить скрипт...

Admin » » Сообщение:

rons,

rons писал(а) › 29.04.2016, 01:19:Нужно перед словом "животных" вставить <div class="foo">кости</div>

Вот так это делается:

Код: Выделить всё Развернуть
<div class="mes">Вместе с останками флоресских людей были <br> найдены примитивные каменные орудия, обожжённые животных и прочие следы материальной культуры.</div>

<script type="text/javascript">
$('.mes').each(function(){
   var text = this.innerHTML, block = '<div class="foo">кости</div>';
    this.innerHTML = text.replace(/(животных)/gi, block+'$1');
});
</script>

Или вот так - в одну строку:

Код: Выделить всё Развернуть
<script type="text/javascript">
$('.mes').html($('.mes').html().replace(/(животных)/gi, '<div class="foo">кости</div>$1'));
</script>


След.



Похожие темыКомментарии ПросмотрыПоследнее сообщение
0339Истек период сессии. Обновить/продл...
Сообщение от: Admin
0770Стоп спамер. Проверка пользователей...
Сообщение от: Admin
11677Re: Скрипт быстрый поиск по entery ...
Сообщение от: Admin
21406Re: Закладки пользователя для сайта...
Сообщение от: Admin
0976Простой и небольшой скрипт определя...
Сообщение от: Admin