Помогите сократить код
Была цель - написать скрипт под uCoz. В общем не буду вдаваться в подробности - главное что работает. Но проблема в другом. Он относительно большой:
var div = document.getElementsByClassName('answer')
var num1 = parseFloat(div[0].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num2 = parseFloat(div[1].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num3 = parseFloat(div[2].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num4 = parseFloat(div[3].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num5 = parseFloat(div[4].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num6 = parseFloat(div[5].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num7 = parseFloat(div[6].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num8 = parseFloat(div[7].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num9 = parseFloat(div[8].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var num10 = parseFloat(div[9].getElementsByTagName('span')[0].getAttribute('title').substr(9))
var mark1 = parseFloat(div[0].getElementsByTagName('span')[0].innerHTML)
var mark2 = parseFloat(div[1].getElementsByTagName('span')[0].innerHTML)
var mark3 = parseFloat(div[2].getElementsByTagName('span')[0].innerHTML)
var mark4 = parseFloat(div[3].getElementsByTagName('span')[0].innerHTML)
var mark5 = parseFloat(div[4].getElementsByTagName('span')[0].innerHTML)
var mark6 = parseFloat(div[5].getElementsByTagName('span')[0].innerHTML)
var mark7 = parseFloat(div[6].getElementsByTagName('span')[0].innerHTML)
var mark8 = parseFloat(div[7].getElementsByTagName('span')[0].innerHTML)
var mark9 = parseFloat(div[8].getElementsByTagName('span')[0].innerHTML)
var mark10 = parseFloat(div[9].getElementsByTagName('span')[0].innerHTML)
var v = parseFloat(document.getElementById('v').innerHTML)
var nv = v/10
alert(Math.ceil(((mark1*num1)+(mark2*num2)+(mark3*num3)+(mark4*num4)+(mark5*num5)+(mark6*num6)+(mark7*num7)+(mark8*num8)+(mark9*num9)+(mark10*num10))/nv)/10)
Вопрос вот в чем: как заменить 20 почти одинаковых строк кодом по меньше? Сам еще новичек, многого не знаю :) |
Циклы же.
|
Спасибо, попробовал... кое что получилось, но с проблемами:
div = document.getElementsByClassName('answer')
for (var i = 0; i < 10; i++) {
alert(parseFloat(div[i].getElementsByTagName('span')[0].getAttribute('title').substr(9)))
}
так работает, но присвоить отдельно каждое выражение отдельной переменной не получается:
div = document.getElementsByClassName('answer')
for (var i = 0; i < 10; i++) {
num'i' = parseFloat(div[i].getElementsByTagName('span')[0].getAttribute('title').substr(9))
}
alert(num1)
уже минут 20 ищу на разных сайтах, в том числе и тут, но нигде не написано о... грубо говоря "пристыковке", в общем вы поняли. Можете указать на ошибку? В любом случае спасибо за помощь. |
Цитата:
|
Хм... теперь всё ясно. Еще раз спасибо!
|
| Часовой пояс GMT +3, время: 22:25. |