Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   проблема со свойством "checked" (https://javascript.ru/forum/events/30351-problema-so-svojjstvom-checked.html)

Sherminator 01.08.2012 14:09

проблема со свойством "checked"
 
Есть страница, на ней div'ы с нумерованными id, к ней прикручиваю скрипт для сепарирования только нужных блоков с информацией. Слева от полученного списка поставил чекбоксы. Так вот, мне нужно чтобы скрипт открывал страницы, чекбоксы которых отмечены. Все работает кроме функции проверки чекбоксов cdtrack() на свойство "checked". Уже искавырял код как только можно. Где я провтыкал ?

P.S. Скрипт прикручивается к левому сайту при помощи Опера 12 - настройка для сайтов, поэтому такая каша, но работает ))

cls = "dragFromTrack";
j = 0;
ch = 0;
uch = 0;

document.onload=setTimeout("onP()",5000);

function onP() {
	var parent = document.getElementsByTagName('BODY')[0];
    var newP = document.createElement('div');
    newP.id = 'myPId';
	newP.style.position = 'fixed';
    newP.style.bottom = '0px';
    newP.style.left = '0px';
	newP.style.width = '';
    newP.style.background = 'url("http://nerdfilehost.ucoz.net/back-mail.png"), url("http://nerdfilehost.ucoz.net/back-mail.png")';
    newP.style.color = '#000';
	newP.style.overflowY = 'auto';
	newP.style.maxHeight = 500 + "px";
	newP.style.border = 'solid 1px #3AA9F5';
	newP.style.padding = '5px';
	newP.style.borderRadius = '10px 10px 0 0 ';
	newP.style.color = '#3AA9F5';
	newP.style.zIndex = '9999999';
	newP.innerHTML = '<div style="text-align: left; padding-bottom: 5px;" id="out"></div><div style="text-align: left; padding-top: 5px; border-top: solid 1px #3AA9F5"><input type="button" value="Все" onclick="getP(\'track\')"/><input name="" type="button" value="Проигранные" onclick="getP(\'played\')"/><input name="" type="button" value="clscr" onclick="clscr()"/><input name="" type="button" value="cdtrack" onclick="cdtrack()"/></div>';
    parent.appendChild(newP);
	};

function getP(cls) {
	document.getElementById("out").innerHTML = "";
	ct = document.getElementsByClassName(cls);
	for (i=0; ct[i].innerHTML!="" ; i++)
{
if (ct[i].id!="") {
	ct2 = ct[i].id.substr(8);	
	document.getElementById("out").innerHTML +="<div><input style=\"\" class=\"cdt\" type=\"checkbox\" id=\"cdt" + ct2 + "\" checked=\"checked\"/><a href=\"http://example.com/download/" + ct2 + "\">" + ct[i].getElementsByTagName('div')[0].getElementsByTagName('a')[0].innerHTML + "</a></div>";}
};
document.getElementById("out").innerHTML +="<span style=\"color:#F00; line-height: 20px;\">Произошла ошибка</span>";
};
	
function clscr() { 
document.getElementById("out").innerHTML = "";
};	


function cdtrack() { 
cd = document.getElementsByClassName('cdt');
if (j<=i) {
	if (cd[j].checked)
		{
		//alert("checked");
		ch += 1;
		j+=1;
		cdtrack();
		}
		else {
			//alert("UNchecked");
			uch += 1;
			j+=1;
			cdtrack();
			 }
		}
	else { j = 0; alert("ch "+ ch + " uch " + uch) }
};

vadim5june 01.08.2012 14:18

if (j<=i) {
имелось ввиду

if (j<=1) {
i-не определен

Sherminator 01.08.2012 14:22

Цитата:

Сообщение от vadim5june
if (j<=1) {
i-не определен

i определен в

function getP(cls) {

...
for (i=0; ct[i].innerHTML!="" ; i++)


тут переменная i - глобальная, и является "маркером конца списка".

vadim5june 01.08.2012 14:29

Цитата:

Сообщение от Sherminator
ут переменная i - глобальная, и является "маркером конца списка".

я не нашел где она объявлена глобальной

Sherminator 01.08.2012 14:33

перед ней нет var, значит она доступна за пределами данной функции.

vadim5june 01.08.2012 14:55

а что не работает в чем проявляется?
Вы нигде ch и uch не обнуляете

Sherminator 01.08.2012 15:07

если чекед, то проверяет только первую запись, если не чекед, то вообще функция не выполняется :(

Sherminator 01.08.2012 15:13

вобщем vadim5june, подкрутил код, добавил пару переменных, и все работает. Только теперь не могу понять, почему не обнуляется count. Список выводит верно, но при формировании списка "проигранные", выбивает старый список из "все".

cls = "dragFromTrack";
j = 0;
i = 0;

document.onload=setTimeout("onP()",5000);

function onP() {
	var parent = document.getElementsByTagName('BODY')[0];
    var newP = document.createElement('div');
    newP.id = 'myPId';
	newP.style.position = 'fixed';
    newP.style.bottom = '0px';
    newP.style.left = '0px';
	newP.style.width = '';
    newP.style.background = 'url("http://nerdfilehost.ucoz.net/back-mail.png"), url("http://nerdfilehost.ucoz.net/back-mail.png")';
    newP.style.color = '#000';
	newP.style.overflowY = 'auto';
	newP.style.maxHeight = 500 + "px";
	newP.style.border = 'solid 1px #3AA9F5';
	newP.style.padding = '5px';
	newP.style.borderRadius = '10px 10px 0 0 ';
	newP.style.color = '#3AA9F5';
	newP.style.zIndex = '9999999';
	newP.innerHTML = '<div style="text-align: left; padding-bottom: 5px;" id="out"></div><div style="text-align: left; padding-top: 5px; border-top: solid 1px #3AA9F5"><input type="button" value="Все" onclick="getP(\'track\')"/><input name="" type="button" value="Проигранные" onclick="getP(\'played\')"/><input name="" type="button" value="clscr" onclick="clscr()"/><input name="" type="button" value="cdtrack" onclick="cdtrack()"/></div>';
    parent.appendChild(newP);
	};

function getP(cls) {
	count = -1;
	document.getElementById("out").innerHTML = "";
	ct = document.getElementsByClassName(cls);
	for (i=0; ct[i].innerHTML!="" ; i++)
{
if (ct[i].id!="") {
	ct2 = ct[i].id.substr(8);
	document.getElementById("out").innerHTML +="<div><input style=\"\" class=\"cdt\" type=\"checkbox\" id=\"cdt" + ct2 + "\" checked=\"checked\"/><a href=\"http://example.com/download/" + ct2 + "\">" + ct[i].getElementsByTagName('div')[0].getElementsByTagName('a')[0].innerHTML + "</a></div>"; count +=1; }
};
document.getElementById("out").innerHTML +="<span style=\"color:#F00; line-height: 20px;\">Произошла ошибка</span>";
};
	
function clscr() { 
document.getElementById("out").innerHTML = "";
};	


function cdtrack() { 
cd = document.getElementsByClassName('cdt');
for (j=0; j<=count; j++) {
	if (cd[j].checked) {
ch += cd[j].id.substr(3) + ", ";
	}
}
alert(ch)
};

Sherminator 01.08.2012 15:25

о, провтыкал обнулять переменную ch :haha: . Все работает. Тема закрыта :)


Часовой пояс GMT +3, время: 23:09.