не вставляются значения в div
я новичок, поэтому прошу сильно камнями не кидаться.
var unit_res=[]; var res_population=[]; var max_population=[]; <?php for ($i=0; $i<$count_res1; $i++) { echo "unit_res[".$i."]= Array (".$res1[$i][0].",".$res1[$i][1].",".$res1[$i][2].",".$res1[$i][3].");"; echo "res_population[0]=Math.floor(wood/".$res1[$i][0]."); "; echo "res_population[1]=Math.floor(clay/".$res1[$i][1]."); "; echo "res_population[2]=Math.floor(iron/".$res1[$i][2]."); "; echo "res_population[3]=Math.floor(crop/".$res1[$i][3]."); "; echo " count_res_pop = res_population.length, min = res_population[0]; while (count_res_pop--) { if (res_population[count_res_pop] < min) { min = res_population[count_res_pop]; } } "; echo "if (min<population) {max_population[".$i."]=min} else {max_population[".$i."]=population}"; echo "alert(max_population[".$i."]);";// потом убрать /*ЧТО ТО ВОТ ТУТ НЕ ТАК*/ echo "window.onload = function() { document.getElementById('max_unit'+".$i.").innerHTML = max_population[".$i."]; };"; /*Конец чего не так*/ echo "window.addEventListener('DOMContentLoaded', function() { var form = document.querySelector('form'); form.addEventListener('input', function(e){ var el = e.target; el.classList.contains('text'+".$i.") && el.classList[ (el.value>max_population[".$i."])?'add':'remove'] ('RedText'); });}); "; } ?> <form name = "units" method="post" action="timers/units_t.php?town=<?php echo $town_id;?>" onsubmit="return validate_form ( );"> <table> <tr> <td>Единица</td><td>Требуется</td><td>В деревне/Всего</td><td>Призыв</td><td></td> </tr> <tr> <td>Юнит1</td><td>Тут будут ресы</td><td>В деревне/Всего</td><td> <input class="text0" size="3" id="unit1" name = 'unit1'></td><td><div id='max_unit0'></div></td> </tr> <tr> <td>Юнит2</td><td>Тут будут ресы</td><td>В деревне/Всего</td><td> <input class="text1" size="3" id="unit2" name='unit2'></td><td><div id='max_unit1'></div></td> </tr> <tr> <td>Юнит3</td><td>Тут будут ресы</td><td>В деревне/Всего</td><td> <input class="text2" size="3" id="unit3" name='unit3'></td><td><div id='max_unit2'></div></td> </tr> </table> <p><input type="submit"></p> </form> Сейчас вставляется только последнее значение в <div id='max_unit2'> А надо что бы вставляло в каждый див значение. И если будут еще какие нить замечания по коду- пишите |
dantist433, это какой-то суп-набор из ПХП, ХТМЛ и JS...
Ты осилишь сделать нормальный ХТМЛ и JS тестовый пример? |
могу весь файл кинуть, может так понятнее будет?
|
Цитата:
Т.ч. либо генери внутренности иначе... Или используй другой способ навешивания обработчиков... ;) |
Цитата:
Расширять нужно свои "умения". ;) Например учиться делать нормальные тестовые примеры. |
Цитата:
|
Цитата:
Тут знания нужно наращивать. ;) https://learn.javascript.ru/introduction-browser-events |
Так и учусь, что то на форуме подсказывают, что то сам на основании примеров,
|
Цитата:
|
ну книжки это само собой, например
написали мне на форуме или в примере что то например for (var i = 1; i < 10; i++) {alert (i);} если я не знаю какие то операторы и что они выполняют- обращаюсь к книжкам |
Но я разобрался, спасибо за подсказку
у меня же есть window.addEventListener('DOMContentLoaded', function()) вот в эту функцию и запихнул. |
Цитата:
|
Цитата:
привел код в более менее понятный вид var max_population=Array (16,5,4); for (var i = 0; i < 3; i++) { window.addEventListener('DOMContentLoaded', function() { inp2 = document.createElement( 'input' ); inp2.type = 'button'; inp2.name = 'input_2'; inp2.id = 'max_unit'+i; inp2.value = max_population[i]; document.getElementById( 'units' ).appendChild( inp2 ); var address = document.getElementById('max_unit'+i); var favoriteAddress = document.getElementById('unit'+i) ; if (address.value!=0) { document.getElementById('max_unit'+i).onclick = function() {favoriteAddress.value=address.value ;address.value=0; } } else { document.getElementById('max_unit'+i).onclick = function() {address.value=favoriteAddress.value ;favoriteAddress.value=5; } } var form = document.querySelector('form'); form.addEventListener('input', function(e) { var el = e.target; el.classList.contains ('text'+i) && el.classList[ (el.value>max_population[i])?'add':'remove'] ('RedText'); }); }); } <form name = "units" method="post" id="units" action="timers/units_t.php" onsubmit="return validate_form ( );"> <table> <tr> <td>111</td><td>111</td><td>111</td><td> <input class="text0" size="3" id="unit0" name = 'unit0'></td><td></td> </tr> <tr> <td>222</td><td>222</td><td>222</td><td> <input class="text1" size="3" id="unit1" name='unit1'></td><td></td> </tr> <tr> <td>333</td><td>333</td><td>333</td><td> <input class="text2" size="3" id="unit2" name='unit2'></td><td></td> </tr> </table> <p><input type="submit"></p> </form> И тут возникло сразу 2 вопроса: 1. Такое чувство что переменная i из for не передается в функцию, как это исправить??? Так как max_population[i] у меня получается undefined, а перед функцией все норм 2. Когда она передается(а у меня через PHP она передается) то при 1 нажатии значения передаются в инпут, а при повторном нажатии не передается обратно, как будто это условие не отрабатывает if (address.value!=0) { document.getElementById('max_unit'+i).onclick = function() {favoriteAddress.value=address.value ;address.value=0; } } else { document.getElementById('max_unit'+i).onclick = function() {address.value=favoriteAddress.value ;favoriteAddress.value=5; } } опять же вопрос почему? |
Цитата:
Это все может сделать мощный сервер сразу. Без всякой нагрузки на клиент. У тебя же получается какая-то каша, в которой ты путаешься сам. Совет еще такой... Сначала сделай сам хтмл и JS который будет в итоге. Если все там заработает как нужно - можно переходить к генерации этого хтмл и JS. А пока ты гененрируешь то, что даже не понимаешь чего получается в итоге и как потом это все работает. :) Твои вопросы получаются из серии "Я вот тут чего-то нагененрил... Но оно не работает или работает как то так, что мне не понятно..." А ты должен четко понимать чего ты там генеришь. Т.ч. начни все с простых хтмл и JS. Сделаешь там - пробуй генерить серверным скриптом. |
dantist433,
Цитата:
window.addEventListener('DOMContentLoaded', function() { }); а не наоборот, как у вас |
Часовой пояс GMT +3, время: 00:30. |