Я бы сделал это так:
var vals = [], p_contents = document.forms['addForm']['p_contents[]'];
for(var i=0,elm;elm = p_contents[i];i++) {
if(elm.checked) {
vals.push(elm.value);
}
}
и если вам нужен результат для строки, просто сделайте
vals.join(',');
Если требуется encodeURIComponent
, сделайте это, прежде чем помещать значение в массив vals следующим образом:
vals.push(encodeURIComponent(elm.value));
Итак, подведем итог: если вы ищете тот же результат, который дает ваш собственный код, сделайте следующее:
var contents, vals = [], p_contents = document.forms['addForm']['p_contents[]'];
for(var i=0,elm;elm = p_contents[i];i++) {
if(elm.checked) {
vals.push(encodeURIComponent(elm.value));
}
}
contents = vals.join(',');
Вы можете увидеть это здесь: http://jsfiddle.net/3MRc7/