Necesito intercambiar dos href si un "texto" es exacto. Probé muchas soluciones y pensé que finalmente encontré una con una forma limpia, pero no hay cambios ni errores. ¿Tienes una explicación?
let link_1 = document.getElementById('rempl_1').href; let link_2 = document.getElementById('rempl_2').href; $(document).ready(function() { if ( document.getElementById('custom_field').innerHTML.indexOf('remplacement') != -1) { let tmp = link_1; link_1 = link_2; link_2 = tmp; } });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <div class="row"> <span class="custom_field" id="custom_field">remplacement</span> <a class="rempl" href="my_first_url" title="original" id="rempl_1">First</a> <a class="rempl" href="my_second_url" title="remplacement" id="rempl_2">Second</a> </div>
¿Te refieres a esto?
Tenga en cuenta que eliminé la necesidad de jQuery ya que no lo estaba usando de todos modos
window.addEventListener("load", function() { const custom = document.getElementById('custom_field'); if (custom.innerHTML.includes('remplacement')) { const links = document.querySelectorAll(".rempl"); const href0 = links[0].href; const href1 = links[1].href; links[0].href = href1; links[1].href = href0; } });
<div class="row"> <span class="custom_field" id="custom_field">remplacement</span> <a class="rempl" href="my_first_url" title="original" id="rempl_1">First</a> <a class="rempl" href="my_second_url" title="remplacement" id="rempl_2">Second</a> </div>
la cadena se copia como valor cuando se asigna a una nueva variable, por lo que asignar una nueva cadena a la variable no cambiará el valor original de href.
si cambiar ancla href es lo que desea, debe agregar
document.getElementById('rempl_1').href = link_1; document.getElementById('rempl_2').href = link_2;
para este escenario, prefiero almacenar el elemento como variable:
let a1 = document.getElementById('rempl_1'); let a2 = document.getElementById('rempl_2'); $(document).ready(function () { if ( document.getElementById('custom_field').innerHTML.includes('remplacement') ) { [a1.href, a2.href] = [a2.href, a1.href]; } });
PD: tal vez quieras escribir replacement
en lugar de remplacement