estoy usando dos botones simples, uno para desplazarse y el otro para detener el desplazamiento,
el problema es :
cuando vuelvo a hacer clic en el botón de desplazamiento después de dejar de desplazarse,
el programa falla repentinamente y me da este error: TypeError no detectado: no se pueden establecer las propiedades de nulo (estableciendo 'src')
los nombres de las imágenes son de 1 a 6 jpg, por ejemplo: el nombre de la primera foto es 1.jpg, así que uso cnt para cruzarlas en el código, mi código es:
var setBallsMove; var cnt=1; var getParent=undefined; document.write("\x3Cbutton onclick='sideShowing()' type='button'> SideShowing !\x3C/button>"); document.write("\x3Cbutton onclick='stop()' type='button'> stop !\x3C/button>"); document.write("\x3Cdiv class='boy1' > \x3Cimg id=id"+cnt+" src='SlideShow/1.jpg' > \x3C/div>"); function sideShowing(){ getParent = document.getElementById("id"+cnt); window.setBallsMove= setInterval(function slid (){ window.getParent.src="SlideShow/"+cnt+".jpg"; getParent.id="id"+cnt; cnt++; if (cnt==6) { cnt=1;}}, 500); } function stop(){ window.clearInterval(setBallsMove); setBallsMove=undefined; getParent=undefined; };Espero haber escrito toda la información correctamente, gracias por su paciencia.
El problema no está relacionado con setInterval y clearInterval . Actualiza getParent.id con cnt y luego incrementa cnt . Por lo tanto, getParent.id y cnt son diferentes la próxima vez que intente getElementById y, por lo tanto, obtenga null . Debe incrementar cnt antes de actualizar getParent.src y getParent.id .
window.setBallsMove = setInterval(function slid() { cnt++; if (cnt == 6) { cnt = 1; } window.getParent.src = "SlideShow/" + cnt + ".jpg"; getParent.id = "id" + cnt; }, 500); Pero simplemente hablando, simplemente no necesita, y no debe, cambiar la id en absoluto. Si desea almacenar información en un elemento HTML, utilice un atributo data-* personalizado.