Hola chicos, una parte del ejercicio escolar es imprimir el .length de números en mi área de texto. En otras palabras, también si hay cadenas en el área de texto, solo debe contar los números.

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 feb. 2018 a las 12:26

3 respuestas

La mejor respuesta

Estás confundiendo muchas cosas aquí.

Primero, solo debes almacenar el value de #kommentar, no su longitud.

Luego, después de aplicar su RegEx, la cantidad de números en su área de texto será la length de su variable 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 feb. 2018 a las 09:49

Para obtener la longitud de los números, puede usar \d para la expresión regular, que coincidirá con todos los dígitos en lugar de \d+ que coincidirá con uno o más dígitos.

Match puede devolver {{X0 }}, así que primero debes verificarlo:

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 feb. 2018 a las 09:57

A las respuestas anteriores no les importan los números reales

Por ejemplo, "1s" no es un número

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 feb. 2018 a las 09:54