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

215
Views
TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'toUpperCase')

He estado tratando de convertir la entrada de texto al caso adecuado y al caso de la oración. El caso apropiado parece funcionar bien, pero el caso de la oración arroja Uncaught TypeError: Cannot read properties of undefined (reading 'toUpperCase') . Revisé esta publicación y apliqué algunos cambios, pero no tuve suerte. Sorprendentemente, .toUpperCase() funciona bien en la función de mayúsculas y minúsculas adecuada.

 document.getElementById("proper-case").addEventListener("click", function() { let words = document.querySelector("textarea").value.split(" "); let string = ""; for (let i = 0; i < words.length; i++) { string += words[i][0].toUpperCase() + words[i].substring(1).toLowerCase(); if (i != words.length - 1) { string += " "; } } document.querySelector("textarea").value = string; }); document.getElementById("sentence-case").addEventListener("click", function() { let sentences = document.querySelector("textarea").value.split("."); let string = ""; console.log(sentences); for (let i = 0; i <= sentences.length - 1; i++) { if (i == 0) { string += sentences[i][0].toUpperCase() + sentences[i].substring(1).toLowerCase() + "."; } else { string += " " + sentences[i][1].toUpperCase() + sentences[i].substring(2).toLowerCase() + "."; } } console.log(string) document.querySelector("textarea").value = string; })
 <textarea></textarea> <button id="proper-case">Proper Case</button> <button id="sentence-case">Sentence Case</button>

¿Puede alguien decirme cuál es el problema aquí?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La operación .split('.') devuelve una cadena vacía en su último elemento de la matriz, por lo tanto, las sentences[i][1] no están definidas. Para resolver esto, puede verificar si las oraciones [i] no son una cadena vacía.

Además, puede usar String.trimLeft() en el caso else.

about 4 years ago · Juan Pablo Isaza Report

0

Esta línea provoca el error.

string += " " + sentences[i][1].toUpperCase() + sentences[i].substring(2).toLowerCase() + ".";

su división separa la cuerda en un punto. si no hay nada después del punto, también hay un elemento vacío en la matriz. y es por eso que el [0] arroja un error. porque una cadena lerrer no tiene un primer carácter. para corregir el error, primero debe detectar este caso.

por ejemplo

 document.getElementById("sentence-case").addEventListener("click", function() { let sentences = document.querySelector("textarea").value.split("."); let string = ""; console.log('=>', sentences); for (let i = 0; i <= sentences.length - 1; i++) { if (i == 0) { string += sentences[i][0].toUpperCase() + sentences[i].substring(1).toLowerCase() + "."; } else { console.log(sentences[i][1]); let s1 = '' let s3 = '' if(typeof sentences[i][0] !== "undefined") { s1 = " " + sentences[i][0].toUpperCase(); s3 = "."; } string += s1 + sentences[i].substring(2).toLowerCase() + s3; } } console.log(string) document.querySelector("textarea").value = string; })
about 4 years ago · Juan Pablo Isaza 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!