2012-05-23 29 views
5

Aquí está mi código:evento onclick de la etiqueta img

<div id="cmdt_1_1d" class="dt_state1" onclick="sel_test(this.id)"> 
<img id="cmdt_1_1i" onclick="dropit('cmdt_1_1');" src="/site/hitechpackaging/images/items/bags_menu.jpg "> 
<span class="dt_link"> 
<a href="javascript://">BAGS</a> 
</span> 
</div> 

Por desgracia, no puede modificar este archivo, hay una manera de desactivar el uso de JavaScript para la onclick solamente de la etiqueta img.

Estaba usando esta secuencia de comandos pero deshabilita el evento onclick de todas las imágenes. Pero quiero solamente de este componente

var anchorElements = document.getElementsByTagName('img'); 
// for (var i in anchorElements) 
// anchorElements[i].onclick = function() { 
     // alert(this.id); 
//  return false; 
// } 

Cualquier idea será apreciada.

Editado: ¿Hay alguna manera de detener la ejecución de la función dropit, es posible usar javascript. En la carga de la página, etc.

Otra opción es ¿puedo cambiar el nombre del archivo img usando javascript?

+0

¿Se utiliza jQuery en la página? –

+0

Solo puedo usar javascript. – jbcedge

+2

Ya tienes el código para hacerlo en tu pregunta. Tal vez su pregunta no sea cómo desactivarla sino cómo aislar esta imagen en particular sin deshabilitar todas las imágenes y sin conocer la identificación. –

Respuesta

11
var eles = document.getElementById('cmdt_1_1d').getElementsByTagName('img'); 
for (var i=0; i < eles.length; i++) 
    eles[i].onclick = function() { 
    return false; 
    } 
+0

gracias Gabe está funcionando bien, pero quiero saber si hay alguna manera de desactivar toda la etiqueta img dentro de un div. Porque habrá muchos archivos de imágenes y no sabrá los nombres. ¿¿¿Es posible??? – jbcedge

+1

Nit pick: (aunque es una buena respuesta) no hay getElement_s_ById - solo hay (se supone que debe haber) un elemento por Id. – JKing

+0

@jazzrai - actualizado. – Gabe

1

intentar algo como esto:

var badImage = document.getElementById("cmdt_1_1i"); 
badImage.onclick = null; 
badImage.addEventlistener("click",function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    return null; 
},true); 
16
document.getElementById('cmdt_1_1i').removeAttribute("onclick"); 
+0

nice - Ni siquiera pensé en eliminar Atributo - esa es probablemente la mejor manera de hacerlo, en lugar de interceptarlo/sobrescribirlo, ¡simplemente elimínalo! – JKing

+0

Sí, inusual, pero para javascript "obstrusivo" debería funcionar :-) – Bergi

+0

@ Bergi-su definición de discreto parece diferente a los demás, su respuesta es simplemente JS. El javascript "discreto" esperaría a que el documento se cargara, verificaría si el elemento existe y luego probaría para ver si * removeAttribute * era compatible antes de llamarlo. – RobG

3

Un montón de respuestas, pero la más sencilla es:

document.getElementById('cmdt_1_1i').onclick = ''; 
Cuestiones relacionadas