Проблема с получением onMouseOver и onClick для работы

У меня проблема с onClick и onMouseOver, и я пытаюсь решить ее с помощью чистого JavaScript.

У меня есть 2 изображения, когда курсор находится над image1, появляется image2, и у этого image2 есть функция, которая вызывается с onClick().

Я использую функцию для изменения идентификатора, чтобы показать/скрыть изображение (используя CSS)

function show()
{
    document.getElementById('ferramenta1').id='ferramenta100';
}

function hide()
{
    document.getElementById('ferramenta100').id='ferramenta1';  
}
<!-- image 1 -->

<img src="imagens/favNulo.png" onMouseOver="show()" onMouseOut="hide()" id="favorito1" title="Favorito n°1" style="cursor:pointer;"/>

<!-- image 2 -->
<img src="imagens/ferramentaFavoritos.png" onClick="editarTelaFav()"  onMouseOver="show()"  id="ferramenta1" title="Editar favorito n°1" style="cursor:pointer"/>   

Изображения меняются правильно, но onClick не работает.

Я нашел несколько сообщений, похожих на это, в StackOverflow, но ни одно из них не разрешается без jQuery.

EDIT: код клика

function editarTelaFav() {
   var fer1 = document.getElementById("ferramenta1").id;

   if (window.event.srcElement.id == fer1) {
     window.open('favoritoNumero1.jsp','','left=50%,top=50%,height=600,width=800');
   }
 }

person user1991144    schedule 08.02.2013    source источник
comment
как выглядит ваш код onclick?   -  person Liam    schedule 08.02.2013
comment
эти ... должны быть в коде? они испортят JS   -  person Andy    schedule 08.02.2013
comment
‹code› function editarTelaFav(){ var code = 0; var fer1= document.getElementById(ferramenta1).id; ... если (window.event.srcElement.id == fer1){ code=1; }... if(code==1){ window.open('favoritoNumero1.jsp','','left=50%,top=50%,height=600,width=800'); } } ‹/code› спасибо за ответ!   -  person user1991144    schedule 08.02.2013
comment
Я пытаюсь поставить кодовый режим, так что извините. но ctrl+k и ‹code› не работают   -  person user1991144    schedule 08.02.2013
comment
Нажмите образец кода в редакторе, @Morre Я отредактировал вопрос, чтобы отформатировать исходный код OP, очевидно, не используется в редакторе   -  person Liam    schedule 08.02.2013
comment
Я только что впервые посмотрел на ваш код - вы меняете идентификаторы элементов??? Не делай этого! Работайте с теми, что у вас есть, и меняйте СТИЛИ!   -  person Mörre    schedule 08.02.2013
comment
@user1991144 user1991144 Для справки в будущем: все, что находится перед четырьмя (4) пробелами в режиме редактирования, будет отформатировано в блок кода после того, как вы сохраните свои изменения. В режиме редактирования вы также можете вставить или написать код, выделить его, а затем нажать кнопку { } в строке инструментов над текстовым полем редактирования, и ваш код будет автоматически помещен в блок кода. Под окном редактирования есть окно предварительного просмотра, чтобы показать вам, как будет выглядеть ваш пост.   -  person ajp15243    schedule 08.02.2013
comment
Я меняю изображение идентификатора и редактирую в CSS. Спасибо за терпеливость   -  person user1991144    schedule 08.02.2013


Ответы (2)


этот бит логики никогда не вернет 1

if(window.event.srcElement.id == fer1){ code=1; }

Потому что каждый раз, когда вы показываете это, вы меняете идентификатор на «ferramenta100».

document.getElementById('ferramenta1').id='ferramenta100';

тбх, я не понимаю, для чего предназначен этот оператор if, удалите его, и он будет работать нормально, поэтому:

function editarTelaFav(){ 

window.open('favoritoNumero1.jsp','','left=50%,top=50%,height=600,width=800'); 
} 
person Liam    schedule 08.02.2013
comment
Извините, наверное, я не очень ясно выразился. Это ... здесь, потому что у меня есть другие 6 элементов. code var fer1= document.getElementById("ferramenta1").id; var fer2= document.getElementById("ferramenta2").id;... if(code==1){window.open'favoritoNumero1.jsp';} if(code==2){window.open('favoritoNumero2.jsp');} - person user1991144; 08.02.2013
comment
Он по-прежнему действителен, когда вы показываете изображение, вы меняете его идентификатор, затем вы проверяете старый идентификатор, поэтому ваш блок if никогда не вернет true, и ваш щелчок никогда не сработает. - person Liam; 08.02.2013

вы можете использовать наведение курсора из css, чтобы изменить изображение, в результате чего вы получите одну команду JavaScript, возможно, это поможет. в вашем css

#hoverchange  a {
width:64px;
height:64px;
background-image: url(imagens/favNulo.png);
display:block;
}

#hoverchange  a:hover {
background-image: url(imagens/ferramentaFavoritos.png);
}

ширина и высота должны быть шириной и высотой вашего изображения.

и в вашем html

<div id="hoverchange">
<a href="#!" onClick="editarTelaFav()"></a>
</div>
person lotav    schedule 08.02.2013
comment
это не отвечает на вопрос. вопрос не в том, как изменить изображение, а в том, почему onclick не работает - person Liam; 08.02.2013
comment
может быть, если он изменит изображение таким образом, щелчок в конце концов сработает !! - person lotav; 08.02.2013