Перейти к содержимому

Фотография
- - - - -

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


  • Вы не можете создать новую тему
  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 BuzinVova

BuzinVova

    Прохожий

    Топикстартер
  • Участник
  • 0
    6 сообщ.

Отправлено 19 Ноябрь 2017 в 23:45

Добрый день! Не могли бы вы показать заполнение массива в цикле через форму? Что надо изменить и в какой строке?
 
Файл 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[i].getAttribute('type')=="text"){
MyArr["lt0"] = (arr_elements[i].getAttribute('value')<0 ? MyArr["lt0"]+1 : MyArr["lt0"]);
MyArr["eq0"] = (arr_elements[i].getAttribute('value')==0 ? MyArr["eq0"]+1 : MyArr["eq0"]);
MyArr["gt0"] = (arr_elements[i].getAttribute('value')>0 ? MyArr["gt0"]+1 : MyArr["gt0"]);
}
}
var max = MyArr[0];
for(var i = 0; i < arr_elements.length; i++){
if(MyArr[i] > max){
max = MyArr[i];
}
}
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.Кроме того, страница должна содержать форму для ввода элементов массива и нахождения максимального элемента массива.

Прикрепленные изображения

  • литералы-объектов.jpg

  • 0

Спонсор

#2 BuzinVova

BuzinVova

    Прохожий

    Топикстартер
  • Участник
  • 0
    6 сообщ.

Отправлено 21 Ноябрь 2017 в 10:53

Я пытался задать вопрос на Киберфоруме и испытал код, но при нажатии кнопки "подсчитать" браузер вывел меня в корень флешки.

 

Файл 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>

  • 0

#3 Volly

Volly

    Увлеченный

  • Участник
  • 96
    477 сообщ.

Отправлено 21 Ноябрь 2017 в 14:19

Если посмотреть верхний код, то там видно объявление элементов массива и присваивание им ноликов:

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, для которых есть присвоение результатов вычисления, но команды распечатать их значений в коде нет.

 

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


  • 0

#4 BaNru

BaNru

    Пацифизжу

  • суперМодератор
  • 983
    3 516 сообщ.

Отправлено 21 Ноябрь 2017 в 15:31

Там всё проще.

<form action="/" method="post">

 ссылается на корень сайта/флешки, поэтому туда и кидает.

Делаем ретурн фалсе у формы и профит

<form onsubmit="return false;">

И ещё там кто-то очень любит пихать jQuery везде, даже где его нет

Вместо

MyArr[i] = +arr_elements[i].getAttribute('value');

надо писать

MyArr[i] = +arr_elements[i].value;

В общем вот рабочий пример

https://jsfiddle.net/xyuvyhg0/


  • 0



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей