to Array from Textarea. что не так?

250
21 июня 2017, 02:28
<body>
    <textarea name="ta" id="textarea" cols="30" rows="10" value= "">45, 85, 75, 6, 5,</textarea> <br>
    <button type= "button", onclick ="getMinOfArray(Array)">MINIMUM</button><br><br><br>
    <button type="button", onclick ="getMaxOfArray(Array)">MAXIMUM</button><br />
    <script type= "text/javascript">
        var Array = parceInt(document.getElementById("textarea").value); 
        function getMinOfArray(numArray) {
            document.write ("Cамая маленькая цыфра в массиве: " + Math.min.apply(null, numArray));
        }
        function getMaxOfArray(numArray) {
            document.write("Cамая большая цыфра в массиве: " + Math.max.apply(null, numArray));
        }
    </script>
</body>
Answer 1

В коде можно выделить несколько ошибок:

  1. опечатка: нет функции parceInt, есть parseInt
  2. неудачное имя переменной Array, совпадающее со встроенным классом Array
  3. сохранение в переменную одного числа, вместо списка чисел
  4. получение значения из textarea всего один раз при загрузке страницы.

Вместо этого нужно из строки, полученной от textarea (document.getElementById("textarea").value) вытащить нужные числа, например с помощью match: document.getElementById("textarea").value.match(/(\d+)/g)

К результату можно сразу применить функции min/max, так как они сами пытаются преобразовать свои аргументы к числам.

В итоге может получиться следующее:

function getMinOfArray(numArray) { 
  var numbers = document.getElementById("textarea").value.match(/\d+/g) || []; //на случай если чисел нет 
  document.write("Самая маленькая цифра в массиве: " + Math.min(...numbers)); 
} 
 
function getMaxOfArray(numArray) { 
  var numbers = document.getElementById("textarea").value.match(/\d+/g) || []; //на случай если чисел нет 
  document.write("Самая большая цифра в массиве: " + Math.max(...numbers)); 
}
<textarea name="ta" id="textarea" cols="30" rows="10" value="">45, 85, 75, 6, 5,</textarea> <br> 
<button type="button" , onclick="getMinOfArray()">MINIMUM</button><br><br><br> 
<button type="button" , onclick="getMaxOfArray()">MAXIMUM</button><br /> 
<script type="text/javascript"> 
</script>

Answer 2
  1. Всегда полученные значения из полей формы имеют тип string.

  2. Посмотрите как преобразуется массив в javascript тут

Вот пример рабочего кода, но оно будет нормально работать если после каждой написанной цифры вставить одинаковый разделитель, у нас это будет ,.

Код работает так, разделяет value на ,, и получается массив у которого типы элементов string, потом явно преобразуем типы элементов в массиве, и после этого только передаем в функцию.

<textarea name="ta" id="textarea" cols="30" rows="10" value= "">45, 85, 75, 6, 5</textarea> <br> 
<button type= "button", onclick ="getMinOfArray(Array)">MINIMUM</button><br><br><br> 
<button type="button", onclick ="getMaxOfArray(Array)">MAXIMUM</button><br /> 
<script type= "text/javascript"> 
    var Array = document.getElementById("textarea").value; 
    Array = Array.split(', '); 
    for(var i=0; i<Array.lengt;i++){ 
        Array[i] = parseFloat(Array[i]); 
    } 
    function getMinOfArray(numArray) { 
         
        document.write ("Cамая маленькая цыфра в массиве: " + Math.min.apply(null, numArray)); 
 
    } 
 
    function getMaxOfArray(numArray) { 
         
        document.write("Cамая большая цыфра в массиве: " + Math.max.apply(null, numArray)); 
 
    } 
 
</script>

Answer 3

Нужно грамотно преобразовать полученные данные из массива в числа, и после этого их перебирать

<body> 
<textarea name="ta" id="textarea" cols="30" rows="10" value= "">45, 85, 75, 6, 5</textarea> <br> 
<button type= "button", onclick ="getMinOfArray()">MINIMUM</button><br><br><br> 
<button type="button", onclick ="getMaxOfArray()">MAXIMUM</button><br /> 
<script type= "text/javascript"> 
     
function getMinOfArray() { 
    let arr = document.getElementById("textarea").value.split(', '); 
    document.write ("Cамая маленькая цыфра в массиве: " + Math.min.apply(null, arr)); 
} 
 
function getMaxOfArray() { 
    let arr = document.getElementById("textarea").value.split(', '); 
    document.write("Cамая большая цыфра в массиве: " + Math.max.apply(null, arr)); 
} 
 
</script> 
</body>

Answer 4

<body> 
<textarea name="ta" id="textarea" cols="30" rows="10" value= "">45, 85, 75, 6, 5</textarea> <br> 
<button type= "button", onclick ="getNumber('min', 'Cамая маленькая цыфра в массиве: ')">MINIMUM</button><br><br><br> 
<button type="button", onclick ="getNumber('max', 'Cамая большая цыфра в массиве: ')">MAXIMUM</button><br /> 
<script type= "text/javascript"> 
     
function getNumber(mode, comment) { 
    var method = Math[mode]; 
    if (!method) return; 
    var arr = document.getElementById("textarea") 
                      .value 
                      .split(',') 
                      .map(function(value){ 
                          return parseInt(value); 
                      }); 
    document.write ((comment || '') + method.apply(null, arr)); 
} 
</script> 
</body>

READ ALSO
Увеличение высоты поля ввода

Увеличение высоты поля ввода

Подскажите, возможно ли в textarea или input-е сделать так, чтобы при достижении правого борта (то есть границы поля), после того, как идет перенос...

221
Как написать правильно replace в javascript

Как написать правильно replace в javascript

Как записать правильно? А то удаляет только если есть последний пример

236
403 при парсинге CURLом

403 при парсинге CURLом

Парсю страницы госзакупок, использую CURL, после некоторого промежутка времени сайт не пускает, выдает 403 ошибкуМожно ли как то избежать этого?...

201
PHP, Что за конструкция &ldquo;$a=(array) $b&rdquo; обозначает

PHP, Что за конструкция “$a=(array) $b” обозначает

недано начал изучать Php, в скрипте встретил такую конструкцию

226