Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

201
Visualizações
No se pueden reemplazar los caracteres de una cadena a otra. ¿Es un error de Javascript?

Estoy tratando de hacer un efecto de reemplazar una cadena con otra, pero sin borrar completamente el contenido de la primera. Como si de un efecto especial se tratara, cada letra de una cadena se transforma en otra palabra. Al principio trato de hacerlo como una máquina de escribir, pero luego quiero hacerlo al azar. Sin embargo, no puedo hacer que funcione, parece que es un error.

 let title1 = "Your sales place"; let title2 = "Software Hub"; var k = 0; var speed = 150; function typeWriter() { if (k < title1.length) { if (k >= title2.length) { title2 += title1.charAt(k); } title2 = title2.replace(title2.charAt(k), title1.charAt(k)); document.getElementById("demo").innerHTML = title2; k += 1; setTimeout(typeWriter, speed); } } typeWriter();
 <div id="demo"></div>

producción:

 YO AESRL SUPLACE
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

replace reemplaza la primera aparición del carácter, que no es necesariamente el del índice k .

En lugar de mutar title2 , recomendaría simplemente hacer

 ….innerHTML = title2.slice(0, k) + title1.slice(k);
about 4 years ago · Juan Pablo Isaza Relatório

0

Este es el código correcto para lo que estoy esperando. Lo siento por el error.

 import { onMount } from "svelte"; let title1 = "Your sales place"; let title2 = "Software Hub"; var part = ""; var k = 0; var speed = 150; onMount(() => { typeWriter(); }); function sliceReplace(origin, final, k) { part = part.slice(0,k); part += final.charAt(k) + origin.slice(k+1); return part; } function typeWriter() { if (k < title1.length) { if (k >= title2.length) { title2 += title1.charAt(k); } document.getElementById("demo").innerHTML = sliceReplace(title2, title1, k); k += 1; setTimeout(typeWriter, speed); } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Esta es su solución con la menor modificación. El problema con su código es usar String.prototype.charAt para buscar y reemplazar su personaje, y encuentra la primera aparición de un personaje. Entonces, cuando un carácter se repite en su cadena, charAt encontrará y reemplazará la primera aparición, no las otras.

Entonces puede definir una función como replaceAt a continuación, para reemplazar un carácter en una posición específica y usar eso.

 let title1 = "Your sales place"; let title2 = "Software Hub"; String.prototype.replaceAt = function(index, replacement) { return this.substr(0, index) + replacement + this.substr(index + replacement.length); } var k = 0; var speed = 150; function typeWriter() { if (k < title1.length) { if (k >= title2.length) { title2 += title1[k]; } else { title2 = title2.replaceAt(k, title1[k]); } document.getElementById("demo").innerHTML = title2; k += 1; setTimeout(typeWriter, speed); } } typeWriter();
 <div id="demo"></div>

Sin embargo, le recomendaría que no use variables globales como contadores cuando llame recursivamente a una función, sino que pase esa variable a su función:

 let title1 = "Your sales place"; let title2 = "Software Hub"; var speed = 150; String.prototype.replaceAt = function(index, replacement) { return this.substr(0, index) + replacement + this.substr(index + replacement.length); } function typeWriter(k) { if (k < title1.length) { let title = document.getElementById("demo").innerHTML if (k >= title.length) { title += title1[k]; } else { title = title.replaceAt(k, title1[k]); } document.getElementById("demo").innerHTML = title; setTimeout(() => {typeWriter(k+1)}, speed); } } document.getElementById("demo").innerHTML = title2; setTimeout(() => {typeWriter(0);}, speed)
 <div id="demo"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda