Element is null
Что за ошибка? Не подскажете? Есть скриптик, который считает сумму отмеченных чекбоксов,
function res()
{var p=0;
var All=document.forms['formSum'];
for(var i = 0; i < All.elements.length; ++i) {
if(All.elements[i].checked){
p=p+(parseInt(All.elements[i].value));
document.formSum.showres.value=p;}
}
}
Но почему-то когда я ставлю чекбокс, Майкрософтская хрень начинает ругаться 'elemets' is null or not an object <form name="formSum"> <input type=\"checkbox\" name=\"q1\" onclick=\"res()\" value=\"$value\" />'$value' </form> |
MasterYoda, фиговый твой скрипт... Вот и ругается.
Т.е. 'elemets' либо не определён, либо не является объектом и с ним не возможны, производимые тобой, действия... |
Почему фиговый? Что в нём не так? (Ответ "ВСЁ" не катит =) )
|
Цитата:
|
ksa! Не смешно! Я сюда наверное за советом пришёл, а не за приколами. Если знаешь, подскажи как исправить, если нет, тогда вообще не забивай тему!
|
Уже забил... :yes:
|
Это ты типа блеснул умом, хреново у тебя получается, из 3 ответов ни одного по теме. Интересно, как живётся с нулевым КПД?
|
var p=0;
var All=document.forms['formSum']; for(var i = 0; i < All.elements.length; ++i) { if(All.elements[i].checked){ p=p+(parseInt(All.elements[i].value)); document.formSum.showres.value=p; // это лучше вынести из тела цикла } } Это не то, чтобы плохо, это черезчур олдскульно. Если совсем просто, то воспользуйся каким-нибудь фреймворком, например, jQuery. Тогда это будет примерно так var p = 0; $('#formSum').find('input[type="checkbox"]:checked').each(function () {p += +this.value}); А у тебя правда что-то странное написано, совсем олдскульно. |
А твой вариант кода в чем заключается? Как производится рассчёт? Я что-то не понимаю.
|
Просто прикол в том что мой код работает нормально, до момента, пока я не пытаюсь подключить его в php, а в html он работает.
|
Такие как ksa тусуются здесь только для того чтобы накручивать счётчик сообщений и карму зарабатывать! Нихрена толкового не сказал ещё и мне -51 сделал, зато у него хрен пойми как меньше чем за минуту на 100 прибавилось!
|
Цитата:
В частности там можно увидеть загадочных LUPUS, DarkLotos, DarkRevenger, зарегистрировавшихся сегодня. MasterYoda, вы с ними случайно не знакомы? |
Цитата:
var p = 0;
$('#formSum').find('input[type="checkbox"]:checked').each(function () {p += +this.value});
p - переменная в которой будет сумма value отмеченных чекбоксов. $('#formSum').find('input[type="checkbox"]:checked') - выбираем отмеченные чекбоксы внутри формы с идентификатором "formSum". Дальше суммируем значения и все. |
А автор-то говнюшок... :lol:
Цитата:
|
Цитата:
p += +this.value то MasterYoda: А вообще-то da_ff прав, уж больно олдскульно... У меня в восьмёрке твой скрипт не ругается. Проверь на всякий, что тебе typeof() вернёт в IE. А лучше вот тебе рабочий скрипт на jQuery, кликай до упора:
$(document).ready(function(){
$('.q1').click( function() {
var p = 0;
$('#formSum input:checkbox').each( function() {
p += ($(this).attr('checked')) ? parseInt( $(this).val() ) : 0 ;
});
$('#showres').val(p);
});
})
и на сервере <?php echo "<form name='formSum'>" ."<input type='checkbox' class='q1' value='5' />" ."<input type='checkbox' class='q1' value='6' />" ."<input type='text' id='showres' value='' />" ."</form>"; ?> (если тебе так нравится) Проверь, я не копался. А твой скрипт работает, не :cray: |
Так тоже не хочет работать. Как-то всё это странно
|
Цитата:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function calc() {
var p = 0;
$('#formSum input[type="checkbox"]:checked').each(function () {p += +this.value});
alert(p);
}
</script>
</head>
<body>
<form id="formSum">
<input type="checkbox" value="1" checked />
<input type="checkbox" value="2" />
<input type="checkbox" value="3" checked />
<input type="checkbox" value="4" />
<input type="checkbox" value="5" checked />
</form>
<input type="button" onclick="calc();" value="Подсчитать" />
</body>
</html>
|
Да, ты прав. Пардон.
Сгоряча не обратил внимания на "+" перед this |
| Часовой пояс GMT +3, время: 03:36. |