Ayuda simple reemplazar un espacio por guion

  • Autor Autor Kiro
  • Fecha de inicio Fecha de inicio
K

Kiro

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
tengo este problema:
tengo varios enlaces con el ID de "enlaxe"
Pero por lógica este codigo de abajo sólo cambia al primer enlace
var cambio = document.getElementById("enlaxe").href;
cambio = cambio.replace("%20", "-");
document.getElementById("enlaxe").href = cambio;
Ahora lo que quiero es que todos los enlaces tengan un guión en lugar de los espacios que tenían.
Se los agradecería mucho en verdad 🙁 amanecí con este problema.
 
tengo este problema:
tengo varios enlaces con el ID de "enlaxe"
Pero por lógica este codigo de abajo sólo cambia al primer enlace
var cambio = document.getElementById("enlaxe").href;
cambio = cambio.replace("%20", "-");
document.getElementById("enlaxe").href = cambio;
Ahora lo que quiero es que todos los enlaces tengan un guión en lugar de los espacios que tenían.
Se los agradecería mucho en verdad 🙁 amanecí con este problema.

En lugar de seleccionar un enlace por el ID, mejor recorre todos los enlaces (etiqueta HTML "a") y realizas el replace.

en jquery haces un each para recorrer los "a" de esta manera:

Insertar CODE, HTML o PHP:
$('a').each(function(){
    Aquí haces el replace de cada uno.
});

Disculpa no poder ayudarte más pero estoy en el móvil y se me dificulta.
 
primero que nada el atributo ID en html es para identificar un único elemento a cambio puedes utilizar el atributo CLASS que es para dar clases a varios elementos y pueden contener el mismo nombre de clases.

si utilizas jquery
Insertar CODE, HTML o PHP:
(function($) {
  $("a.enlace").each(function() {
    var value = $(this).attr('href');
    value = value.replace("%20", "-");
    $(this).attr('href', value);
  });
})(jQuery);
Demo: Edit fiddle - JSFiddle

con javascript
Insertar CODE, HTML o PHP:
(function() {
  var elementos = document.querySelectorAll('a.enlace');
  for (i = 0; i < elementos.length; ++i) {
    var value = elementos[i].getAttribute('href');
    value = value.replace("%20", "-");
    elementos[i].setAttribute('href', value);
  }
})();
Demo: Edit fiddle - JSFiddle
 
Los ids deben ser únicos en cada elemento, puedes quitarles el id y ponerle a todos class="enlaxe", aquí te pongo un ejemplo:
HTML:
<head>
<script type="text/javascript">
function rplace(){
	var elements = document.getElementsByClassName("enlaxe");
	for(var i=0; i < elements.length; i++) {
		var cambio = elements[i].href.replace("%20", "-");
    	        elements[i].href = cambio;
	}
}
</script>
</head>

<body onLoad="rplace()">
<a class="enlaxe" href="/replace%201"></a>
<a class="enlaxe" href="/replace%202"></a>
<a class="enlaxe" href="/replace 3"></a>
</body>
 
muchas gracias por responder, ya esta solucionado, pero ahora con otro problema, en la misma linea tengo el problema de tildes 🙁 y estoy viendo que no funciona como el replace de php donde se pueden cambiar varios fragmentos :sorrow:
 
muchas gracias por responder, ya esta solucionado, pero ahora con otro problema, en la misma linea tengo el problema de tildes 🙁 y estoy viendo que no funciona como el replace de php donde se pueden cambiar varios fragmentos :sorrow:

Tienes una captura de pantalla? O fragmento del código?
 
<script type="text/javascript">
function rplace(){
var elements = document.getElementsByClassName("enlaxe");
for(var i=0; i < elements.length; i++) {
var cambio = elements.href.replace("%20", "-");
elements.href = cambio;
}
}
</script>
</head>

<body onLoad="rplace()">
<a class="enlaxe" href="/Andrés%20Garcia"></a>
<a class="enlaxe" href="/Julio%20Álvarez"></a>
<a class="enlaxe" href="/Carlos%20Suárez"></a>
</body>
es así y tengo los enlaces que corresponden a cada persona, los cuales no llevan tilde
 
Última edición:
Y no te funciona de la misma manera? En lugar de espacios la tilde?

var cambio = elements.href.replace("%20","-");
elements.href = cambio;

var cambio = elements.href.replace("o","ó");
elements.href = cambio;
 
Y no te funciona de la misma manera? En lugar de espacios la tilde?

var cambio = elements.href.replace("%20","-");
elements.href = cambio;

var cambio = elements.href.replace("o","ó");
elements.href = cambio;

necesito también eliminar las tildes así como los espacios.
 
usa encodeURIComponent
 
no sé como emplearlo 😕

- - - Actualizado - - -


la probé, pero deja de funcionar todo el código

Prueba esto
PHP:
$("a").each(function(e) {
	var nuevo = encodeURIComponent(this.href);
	$(this).attr("href", nuevo);
});
 
Prueba esto
PHP:
$("a").each(function(e) {
	var nuevo = encodeURIComponent(this.href);
	$(this).attr("href", nuevo);
});
me aparece todo con enlace doble(http://miweb.com/http:miweb.com/url/loqsea)
y todo lo pone en porcentajes... no quiero eso, quiero que mis enlaces se muestren sin tildes, solo eso.
Los enlaces con nombres ya existen /Alberto-Perez
y lo que genero por escribir el nombre correcto es /Alberto Pérez
y necesito que quede de la primera forma /Alberto-Perez
Sin tilde y con guión reemplazando el espacio.

- - - Actualizado - - -

Ya lo solucioné gracias a jsstoni y epicmedia
grácias de verdad dejo la solución para las personas que tengan el mismo problema en el futuro
<script>
(function($) {
$("a.enlace").each(function() {
var value = $(this).attr('href');
value = value.replace("%20", "-");
value = value.replace(" ", "-");
value = value.replace("á", "a");
value = value.replace("Á", "A");
value = value.replace("é", "e");
value = value.replace("É", "E");
value = value.replace("í", "i");
value = value.replace("Í", "I");
value = value.replace("ó", "o");
value = value.replace("Ó", "O");
value = value.replace("ú", "u");
value = value.replace("Ú", "U");
$(this).attr('href', value);
});
})(jQuery);
</script>

- - - Actualizado - - -

Ya lo solucioné gracias a jsstoni y epicmedia
grácias de verdad dejo la solución para las personas que tengan el mismo problema en el futuro
<script>
(function($) {
$("a.enlace").each(function() {
var value = $(this).attr('href');
value = value.replace("%20", "-");
value = value.replace(" ", "-");
value = value.replace("á", "a");
value = value.replace("Á", "A");
value = value.replace("é", "e");
value = value.replace("É", "E");
value = value.replace("í", "i");
value = value.replace("Í", "I");
value = value.replace("ó", "o");
value = value.replace("Ó", "O");
value = value.replace("ú", "u");
value = value.replace("Ú", "U");
$(this).attr('href', value);
});
})(jQuery);
</script>
 
Atrás
Arriba