Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
cómo hacer que la entrada del usuario en la pantalla se refleje en el evento de clic (js, html)

Estoy tratando de escribir códigos html y js para que la entrada del usuario cambie según el botón en el que haga clic el usuario. Por ejemplo, el usuario ingresa los valores de buscar/reemplazar respectivamente y cuando presiona el botón de reemplazar, la entrada del usuario que escribió inicialmente cambiará. a continuación está mi código que no funciona en absoluto ...

 var str = document.getElementById('text').value; var f = document.getElementById('find').value; var r = document.getElementById('replace').value; let rep = str.replace(f, r); document.getElementById('text').innerHTML = rep; // <button onclick="funcname()">Replace</button><br>
about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Probablemente quieras usar replaceAll ver documentos

 function replace() { var f = document.getElementById('find').value; var r = document.getElementById('replace').value var text = document.getElementById('text'); text.textContent = text.textContent.replaceAll(f, r); return null; }
 <div id="text">foo</div> find <input id="find"> <div></> replace <input id="replace"> <button onclick="replace()">Replace</button><br>

about 4 years ago · Santiago Trujillo Report

0

Necesita crear funciones separadas para lo que está haciendo. Cada botón llamará a la funcionalidad que desea.

A continuación, tengo un párrafo con un texto de identificación. Podemos acceder a él usando document.getElementById o document.querySelector . Debido a que es un elemento de texto, accedemos al valor usando innerHTML .

Para la entrada, necesitamos un elemento de entrada que tenga la entrada id. Se accede al valor usando value .

El reemplazo es sencillo, establezca el HTML interno del párrafo al valor de la entrada.

El hallazgo, no estoy seguro exactamente de lo que quería, pero podemos usar string.includes() para averiguar si el valor en la entrada aparece en el código HTML interno del párrafo.

Finalmente, está buscar y reemplazar, que se puede resolver con string.replace para reemplazar la primera ocurrencia, o puede cambiar a string.replaceAll para reemplazar todas las ocurrencias.

 const find = function() { let str = document.getElementById('text').innerHTML; let inp = document.getElementById('findInput').value; let matched = str.includes(inp) ? 'was' : 'was not'; alert(`${inp} ${matched} found in the sentence.`); }; const replace = function() { document.getElementById('text').innerHTML = document.getElementById('replaceInput').value; }; const findAndReplace = function() { let str = document.getElementById('text').innerHTML; let f = document.getElementById('findInput').value; let r = document.getElementById('replaceInput').value; document.getElementById('text').innerHTML = str.replace(f, r); };
 <p id="text">She sells sea shells on the sea shore.</p> <label for="findInput">Find:</label> <input id="findInput" type="text"><br> <label for="replaceInput">Repalce:</label> <input id="replaceInput" type="text"><br> <button type="button" onclick="find()">Find</button><br> <button type="button" onclick="replace()">Replace</button><br> <button type="button" onclick="findAndReplace()">Find and Replace</button><br>

about 4 years ago · Santiago Trujillo Report

0

Parece que el problema es que replace() solo reemplaza la primera aparición en la string , lo que está causando el problema.

Hay dos soluciones para este problema, que son muy similares.


La primera solución es usar String.replaceAll() . Esta es una nueva característica introducida en ES2021, lo que significa que no es compatible con navegadores antiguos (por ejemplo, Internet Explorer).

Para usarlo, simplemente use el código a continuación.

 const rep = str.replaceAll(f, r); // This line has been modified document.getElementById("text").innerHTML = rep;

Utilizará el nuevo método ( replaceAll() ), que reemplazará todas las apariciones de f con r .


La segunda solución usa una función similar, pero más antigua, llamada String.replace() . Es la misma función que estás usando, pero vamos a usar una técnica diferente.

Para reemplazar todas las ocurrencias, debe usar RegExp para modificar el comportamiento.

Use el siguiente código para reemplazar todas las apariciones con replace() .

 const rep = str.replace(new RegExp(`${f}`, "g"), r); // This line has been modified document.getElementById("text").innerHTML = rep;

Esto usa el new RegExp para crear una nueva instancia de RegExp. Esto se debe a que queremos pasar una variable.

El segundo parámetro es donde ocurre la magia. La g significa global . Esto hace que el método replace replace() reemplace todas las ocurrencias.


En resumen, ambos métodos deberían funcionar. Aquí hay algunas circunstancias de cuál debe usar.

  • Opción 1: use cuando se dirija a navegadores más nuevos y se centre en la legibilidad.
  • Opción 2: usar cuando se dirija a navegadores más antiguos.
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!