Javascript-форум (https://javascript.ru/forum/)
-   Я не знаю javascript (https://javascript.ru/forum/ya-ne-znayu-javascript/)
-   -   Как ограничить работу скрипта, чтобы он выполнялся локально? (https://javascript.ru/forum/ya-ne-znayu-javascript/3903-kak-ogranichit-rabotu-skripta-chtoby-vypolnyalsya-lokalno.html)

Netot 04.06.2009 02:38

Как ограничить работу скрипта, чтобы он выполнялся локально?
 
Помогите разобраться. Впервые верстаю ручками. Задача стоит такая: нужно чтобы кнопки в меню менялись при наведении мыши (кнопки-картинки), скрипт использую следующий:

<!-- Скрипт для кнопочек в верхнем меню -->
<script language="JavaScript"> 
<!--
 
img=new Array()         // Объявляется массив
img[0]=new Image()
img[1]=new Image()
img[2]=new Image()
img[3]=new Image()
img[4]=new Image()
img[5]=new Image()
img[6]=new Image()
img[7]=new Image()

 
img[0].src="image/tax_advice.jpg"    // Каждому элементу массива присваивается
img[1].src="image/tax_advice2.jpg"    // конкретная картинка
img[2].src="image/accounting.jpg"
img[3].src="image/accounting2.jpg"
img[4].src="image/stuff_advice.jpg"
img[5].src="image/stuff_advice2.jpg"
img[6].src="image/legal_advice.jpg"
img[7].src="image/legal_advice2.jpg"
 
function ChgImg(NumImg,Action)       // описывается функция последовательного вывода картинок
{
 
i=eval(NumImg);
 
if(Action)                   // Если картинка меняется
{
document.images[i].src=img[i*2+1].src
}
else                          // Если вернуть к прежней картинке
document.images[i].src=img[i*2].src
}
 
//-->
</SCRIPT>
<!-- Скрипт закончен -->


Проблема в том, что на странице есть уже картинки, которые находятся в теле документа выше, чем те, что должны меняться. Поэтому получается следующее, когда наводишь на нужную кнопку, он меняет не ту картинку, которую необходимо а самую первую в документе и так поочереди... как ограничить выполнение данного скрипта только в рамках конкретного места? :help:

Netot 04.06.2009 03:19

Да, еще забыл... в html место где должен активизироваться этот скрипт выглядит так:

<tr>
<td colspan="4" align="center">

<a href="tax_advice.html" title="Вопросы, связанные с налоговой отчетностью">
<img src="image/tax_advice.jpg" onMouseOver="ChgImg(0,true)" onMouseOut="ChgImg(0,false)" border="0"></a>

<a href="accounting.html" title="Вопросы, связанные с бухгалтерской отчетностью">
<img src="image/accounting.jpg" onMouseOver="ChgImg(1,true)" onMouseOut="ChgImg(1,false)" border="0"></a>

<a href="stuff_advice.html" title="Вопросы, связанные с управлением персоналом">
<img src="image/stuff_advice.jpg" onMouseOver="ChgImg(2,true)" onMouseOut="ChgImg(2,false)" border="0"></a>

<a href="stuff_advice.html" title=">Юридические вопросы">
<img src="image/legal_advice.jpg" onMouseOver="ChgImg(3,true)" onMouseOut="ChgImg(3,false)" border="0"></a>

</td>
</tr>


Помогите, пожалуйста, в чем моя ошибка?

Avaria 04.06.2009 08:20

если я не ошибаюсь тов данной конструкции "document.images[i].src" картинки считаются с самого начала документа. полагается что нужно отсчитать сколько картинок предшествует нужному элементу

Netot 04.06.2009 10:16

Спасибо, но это не помогло. До необходимого места еще есть 3 картинки, начал считать массив с 3-х - глючит... попробовал начать массив с "0" и добавить туда те 3 картинки, которые находятся до нужного места - совсем глючит...
При этом, если нет в документе до этого других картинок, то скрипт работает корректно...

Подскажите, может есть возможность сделать метку, чтобы скрипт начинал работать только в нужной локации? условно "работаю только в этой табличке, остальной документ меня не касаетсяЭ

x-yuri 04.06.2009 12:03

почитай http://javascript.ru/start/dom/search
можно даже http://javascript.ru/start/dom

Netot 04.06.2009 20:03

Спасибо, надо было присвоить id месту, я не знал как это прописать в самом скрипте...


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