Привет, ребята, часть школьного упражнения - распечатать .length чисел в моей текстовой области. Другими словами, также, если в текстовой области есть строки, она должна только считать числа.

Html:

<form>
    <p class="ptags">Kommentar:</p>
    <textarea id="kommentar" rows="5"></textarea>
    <p>Kommentar Ziffern</p>
    <p id="ikomm"></p>
</form>

Javascript:

/*Anzahl Ziffern in der Kommentarbox*/
function zkommentar(){
    var zkomm = document.getElementById('kommentar').value.length;
    var numbers = zkomm.match(/\d+/g).map(Number);
    var string = parseInt(numbers);
    document.getElementById('ikomm').innerHTML = numbers;
}
/*Ausgabe*/
function Ausgabe() {
    {
        document.getElementById('Ausgabe').innerHTML =
            namelength();
            kommentar();
            uhrzeit();
            datum();
            bdata();
            quadrat();
            quersumme();
            zkommentar();
    }
};
0
Sandro21 26 Фев 2018 в 12:26

3 ответа

Лучший ответ

Вы путаете много вещей здесь.

Во-первых, вы должны хранить только value из #kommentar, а не его длину.

Затем, после применения вашего RegEx, количество чисел в вашей текстовой области будет length вашей переменной numbers:

function zkommentar() {
  var zkomm = document.getElementById('kommentar').value;
  var numbers = zkomm.match(/\d/g).map(Number);
  var string = numbers.length;
  document.getElementById('ikomm').innerHTML = string;
}
<form>
  <p class="ptags">Kommentar:</p>
  <textarea id="kommentar" rows="5"></textarea>
  <p>Kommentar Ziffern</p>
  <p id="ikomm"></p>
</form>

<button onclick="zkommentar();">Test</button>
1
Zenoo 26 Фев 2018 в 09:49

Чтобы получить длину чисел, вы можете использовать \d для регулярного выражения, которое будет соответствовать всем цифрам вместо \d+, которое будет соответствовать одной или нескольким цифрам.

Соответствие может вернуть {{X0 }}, так что сначала вы должны проверить это:

var zkomm = document.getElementById('kommentar').value;
var numbers = zkomm.match(/\d/g)
if (numbers) {
    numbers = numbers.map(Number);
    var string = numbers.length;
    document.getElementById('ikomm').innerHTML = string;
}
0
The fourth bird 26 Фев 2018 в 09:57

Предыдущие ответы не заботятся о реальных цифрах

Например, «1с» не является числом

function zkommentar() {
  var zkomm = document.getElementById('kommentar').value;
  var numbers = zkomm.split(' ').filter(_isNumber);
  var string = numbers.length;
  document.getElementById('ikomm').innerHTML = string;
}

function _isNumber(value) {
    return Number.isFinite(+value)
        ? value
        : null;
}
<form>
  <p class="ptags">Kommentar:</p>
  <textarea id="kommentar" rows="5"></textarea>
  <p>Kommentar Ziffern</p>
  <p id="ikomm"></p>
</form>

<button onclick="zkommentar();">Test</button>
0
Sergey Kotyushkin 26 Фев 2018 в 09:54