Литералы объектов: ввод массива и поиск максимального элемента

Статус
Закрыто для дальнейших ответов.

BuzinVova

New Member
Регистрация
05.11.2017
Сообщения
8
Добрый день! Не могли бы вы показать заполнение массива в цикле через форму? Что надо изменить и в какой строке?

Файл StringArr.js

function calculate(obj){
var MyArr = Array();
arr["lt0"] = 0;
arr["eq0"] = 0;
arr["gt0"] = 0;
var arr_elements = obj.form.elements;
for(var i = 0; i < arr_elements.length; i++){
if(arr_elements.getAttribute('type')=="text"){
MyArr["lt0"] = (arr_elements.getAttribute('value')<0 ? MyArr["lt0"]+1 : MyArr["lt0"]);
MyArr["eq0"] = (arr_elements.getAttribute('value')==0 ? MyArr["eq0"]+1 : MyArr["eq0"]);
MyArr["gt0"] = (arr_elements.getAttribute('value')>0 ? MyArr["gt0"]+1 : MyArr["gt0"]);
}
}
var max = MyArr[0];
for(var i = 0; i < arr_elements.length; i++){
if(MyArr > max){
max = MyArr;
}
}
document.getElementById("divv").innerHTML =
"<br>Количество нулевых значений: "+arr["eq0"]+"<br>"
+"<br>Количество значений, больше нуля: "+arr["gt0"]+"<br>"
+"<br>Количество значений, меньше нуля: "+arr["lt0"]+"<br>"
+"<br>Максимальный элемент массива: "+max+"<br>";
}


Файл site-extra-main.html

<!DOCTYPE html>
<html>
<head>
<title>Литералы объектов в JavaScript</title>
<script type="text/javascript" src="StringArr.js"></script>
</head>
<body>
<script type="text/javascript">
var ar1=new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота");
var ar2=new Array("Января","Февраля ","Марта","Апреля ","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабрь");
var now=new Date();
var jour=now.getDate();
var mois=now.getMonth()+1;
var annee=now.getFullYear();
var heur=now.getHours();
var min=now.getMinutes();
var seco=now.getSeconds();
document.write("Сегодня - "+jour+" "+ar2[now.getMonth()]+" "+annee +" года "+", "+ heur+":"+min+":"+seco +", "+ ar1[now.getDay()]);
</script>
<form action="/" method="post">
<input name="ch1" type="text" value="1"><br>
<input name="ch2" type="text" value="2"><br>
<input name="ch3" type="text" value="-1"><br>
<input name="ch4" type="text" value="-2"><br>
<input name="ch5" type="text" value="0"><br>
<input name="ch6" type="text" value="3"><br>
<input name="ch7" type="text" value="0"><br>
<input name="ch8" type="text" value="4"><br>
<input name="ch9" type="text" value="5"><br>
<input name="ch10" type="text" value="-3"><br>
<button onclick="calculate(this)">подсчитать</button>
</form>
<div id="divv">
</div>
<br />
<br />
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-1.html" target="_blank" tabindex="1" title="Перейти на пример 1">Пример 1</a></font></p>
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-2.html" target="_blank" tabindex="2" title="Перейти на пример 2">Пример 2</a></font></p>
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-3.html" target="_blank" tabindex="3" title="Перейти на пример 3">Пример 3</a></font></p>
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-4.html" target="_blank" tabindex="4" title="Перейти на пример 4">Пример 4</a></font></p>
</body>
</html>
Создать страницу, содержащую приветствие в виде :«Сегодня -20 октября 2007 года, 13:01:25, пятница». Для этого используйте объекты Date и Array.Кроме того, страница должна содержать форму для ввода элементов массива и нахождения максимального элемента массива.
 

Вложения

BuzinVova

New Member
Регистрация
05.11.2017
Сообщения
8
Я пытался задать вопрос на Киберфоруме и испытал код, но при нажатии кнопки "подсчитать" браузер вывел меня в корень флешки.

Файл StringArr.js
Код:
function calculate(obj){
    
    var MyArr = Array();
    
    var arr_elements = document.querySelectorAll('form input[type="text"]');
    for(var i = 0; i < arr_elements.length; i++){
        MyArr[i] = +arr_elements[i].getAttribute('value');
    }
    
    var negative = 0; 
    var positive = 0; 
    var zero = 0;
    
    var maxValue = -Infinity;
    
    for(var i = 0; i < MyArr.length; i++)
    {
        var value = MyArr[i];
        
        if(value > maxValue) maxValue = value;
        
        if      (value < 0) negative++;
        else if (value > 0) positive++;
        else                zero++;
    }
        
    
    document.getElementById("divv").innerHTML =
    
        "<br>Количество нулевых значений: "         + zero      + "<br>"
        +"<br>Количество значений, больше нуля: "   + positive  + "<br>"
        +"<br>Количество значений, меньше нуля: "   + negative  + "<br>"
        +"<br>Максимальный элемент массива: "       + maxValue  + "<br>";
}
Файл site-extra-main.html
Код:
<!DOCTYPE html>

<html>
<head>
<title>Литералы объектов в JavaScript</title>
<script type="text/javascript" src="StringArr.js"></script>
</head>
<body>
<script type="text/javascript">
var ar1=new Array("Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота");
var ar2=new Array("Января","Февраля ","Марта","Апреля ","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабрь");
var now=new Date();
var jour=now.getDate();
var mois=now.getMonth()+1;
var annee=now.getFullYear();
var heur=now.getHours();
var min=now.getMinutes();
var seco=now.getSeconds();
document.write("Сегодня - "+jour+" "+ar2[now.getMonth()]+" "+annee +" года "+", "+ heur+":"+min+":"+seco +", "+ ar1[now.getDay()]);
</script>
<form action="/" method="post">
<input name="ch1" type="text"><br>
<input name="ch2" type="text"><br>
<input name="ch3" type="text"><br>
<input name="ch4" type="text"><br>
<input name="ch5" type="text"><br>
<input name="ch6" type="text"><br>
<input name="ch7" type="text"><br>
<input name="ch8" type="text"><br>
<input name="ch9" type="text"><br>
<input name="ch10" type="text"><br>
<button onclick="calculate(this)">подсчитать</button>
</form>
<div id="divv">
</div>
<br />
<br />
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-1.html" target="_blank" tabindex="1" title="Перейти на пример 1">Пример 1</a></font></p>
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-2.html" target="_blank" tabindex="2" title="Перейти на пример 2">Пример 2</a></font></p>
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-3.html" target="_blank" tabindex="3" title="Перейти на пример 3">Пример 3</a></font></p>
<p align="justify"><font face="Times New Roman"; size="5"><a href="site-extra-4.html" target="_blank" tabindex="4" title="Перейти на пример 4">Пример 4</a></font></p>
</body>
</html>
 

Volly

Well-Known Member
Регистрация
21.03.2012
Сообщения
831
Если посмотреть верхний код, то там видно объявление элементов массива и присваивание им ноликов:
arr["lt0"] = 0;
arr["eq0"] = 0;
arr["gt0"] = 0;

Далее ни где для них ничего не вычисляется и не присваивается.
Потом есть команды печати в браузер их значений:
document.getElementById("divv").innerHTML =
"<br>Количество нулевых значений: "+arr["eq0"]+"<br>"
+"<br>Количество значений, больше нуля: "+arr["gt0"]+"<br>"
+"<br>Количество значений, меньше нуля: "+arr["lt0"]+"<br>"

Есть ещё элементы массива MyArr, для которых есть присвоение результатов вычисления, но команды распечатать их значений в коде нет.

Потому и видим то, что не считали, а что считали, то не видим.
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 137
Там всё проще.

<form action="/" method="post">
ссылается на корень сайта/флешки, поэтому туда и кидает.
Делаем ретурн фалсе у формы и профит

<form onsubmit="return false;">
И ещё там кто-то очень любит пихать jQuery везде, даже где его нет
Вместо

MyArr = +arr_elements.getAttribute('value');
надо писать

MyArr = +arr_elements.value;
В общем вот рабочий пример
https://jsfiddle.net/xyuvyhg0/
 
Статус
Закрыто для дальнейших ответов.
Верх Низ