Без операторов if как я могу изменить «слова» на word, когда в текстовой области есть только 1 слово?

#javascript #html

#javascript #HTML

Вопрос:

В настоящее время по умолчанию всегда указывается «Слова:» и «Символы:». В случае 1 слова «слова» должны быть изменены на word. Мне не разрешено использовать операторы if только троичные операторы. Любая помощь будет оценена. Как есть, вывод показывает «Слово» независимо от того, что и то же самое с символом. Нужно только сказать «слово» /»символ», когда есть 1 слово и / или 1 символ и множественное число для остальных.

 function countWords(self) {
  var myText = document.getElementById("myText");
  // Using regular expresisons, it matches the spaces in the text
  var spaces = self.value.match(/S /g);
  // If null set characters to 0, if not sets words to word length
  var words = spaces ? spaces.length : 0;
  var words = 1 ? document.getElementById("wordCount").innerHTML = "Word: "   words : document.getElementById("wordCount").innerHTML = "Words: "   words;

  // Splits text into characters
  var chars = myText.value.split('');
  // Counts the amount of charcters and saves
  var charCount = chars.length;
  // Updates the character Count
  document.getElementById("charCount").innerHTML = "Characters: "   charCount;
  // Updates the word count
  // document.getElementById("wordCount").innerHTML = "Words: "   words;
  var chars = 1 ? document.getElementById("charCount").innerHTML = "Character: "   words : document.getElementById("charCount").innerHTML = "Characters: "   words;
}  
 <h1>Type Your Words In The Text Area Below</h1>

<textarea id="myText" rows="10" cols="50" style="text-transform: uppercase" onkeyup="countWords(this);"></textarea>
<br>
<span id="wordCount">Word: </span>
<br>
<span id="charCount">Character: </span>  

Комментарии:

1. С чем вы боретесь?

2. @evolutionxbox. На выходе должно быть написано «Word», когда введено только 1 слово, и вернуться к множественному числу «Words:», когда набрано несколько слов.

3. Вы ищете document.getElementById("wordCount").innerHTML = (words === 1 ? "Word: " : "Words: ") words;

Ответ №1:

Внутри литерала шаблона вы можете проверить words > 1 , является ли это истиной или ложью, объединить 's' или пустую строку:

 document.getElementById("wordCount").innerHTML = `Word${words > 1 ? 's' : ''}: ${words}`;
  

 function countWords(self) {
  var myText = document.getElementById("myText");
  // Using regular expresisons, it matches the spaces in the text
  var spaces = self.value.match(/S /g);
  // If null set characters to 0, if not sets words to word length
  var words = spaces ? spaces.length : 0;


  // Splits text into characters
  var chars = myText.value.split('');
  // Counts the amount of charcters and saves
  var charCount = chars.length;
  // Updates the character Count
  document.getElementById("charCount").innerHTML = "Characters: "   charCount;
  // Updates the word count
  document.getElementById("wordCount").innerHTML = `Word${words > 1 ? 's' : ''}: ${words}`;
}  
 <h1>Type Your Words In The Text Area Below</h1>

<textarea id="myText" rows="10" cols="50" style="text-transform: uppercase" onkeyup="countWords(this);"></textarea>
<br>
<span id="wordCount"></span>
<br>
<span id="charCount"></span>