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, время: 09:54. |