¿Cómo reemplazo la URL de destino en un botón cuando uso onclick?
<div id="my_button" onclick="window.location.replace('/destination1')">Button<div>Entonces se vería así
<div id="my_button" onclick="window.location.replace('/destination2')">Button<div>Sin embargo, el siguiente código Javascript no funciona. ¿Por qué?
<script> document.getElementById("my_button").onclick="window.location.replace('/destination2')" <script>onclick que ha utilizado en la etiqueta, es un atributo de evento html, pero onclick en la etiqueta, que también intenta cambiar, es una propiedad de objeto div.
Ambos son como "onclick", pero no es lo mismo.
Entonces, si quieres que las cosas funcionen, haz esto:
document.getElementById("my_button").onclick = () => window.location.replace('/destination2');onclick div propiedad necesita función (devolución de llamada) no una cadena
Una forma sencilla de hacerlo sería agregar un oyente y evitar el comportamiento predeterminado del evento.
document .getElementById('my_button') .addEventListener('click', function (event) { event.preventDefault(); window.location.replace('/destination2'); });element.onclick requiere que se asigne una función y difiere del atributo <node onclick=""> donde el contenido se envolverá en una función automáticamente.
Si desea cambiar el atributo, utilice element.setAttribute("onclick", "...");
element.setAttribute("onclick", "window.location.replace('/destination2');");Se comporta similar a:
element.onclick = function() { window.location.replace('/destination2'); }; Otra solución sería usar los atributos de datos a los que se puede acceder mediante element.dataset.name .
Ejemplo:
<div id="my_button" data-path="/destination2" onclick="window.location.replace(this.dataset.path);">Button</div>Y para cambiarlo:
my_button.dataset.path = "/otherPath";