Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.08.2012, 14:09
Аспирант
Отправить личное сообщение для Sherminator Посмотреть профиль Найти все сообщения от Sherminator
 
Регистрация: 01.08.2012
Сообщений: 50

проблема со свойством "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) }
};

Последний раз редактировалось Sherminator, 01.08.2012 в 14:11.
Ответить с цитированием
  #2 (permalink)  
Старый 01.08.2012, 14:18
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

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

if (j<=1) {
i-не определен
Ответить с цитированием
  #3 (permalink)  
Старый 01.08.2012, 14:22
Аспирант
Отправить личное сообщение для Sherminator Посмотреть профиль Найти все сообщения от Sherminator
 
Регистрация: 01.08.2012
Сообщений: 50

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

function getP(cls) {

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


тут переменная i - глобальная, и является "маркером конца списка".
Ответить с цитированием
  #4 (permalink)  
Старый 01.08.2012, 14:29
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от Sherminator
ут переменная i - глобальная, и является "маркером конца списка".
я не нашел где она объявлена глобальной
Ответить с цитированием
  #5 (permalink)  
Старый 01.08.2012, 14:33
Аспирант
Отправить личное сообщение для Sherminator Посмотреть профиль Найти все сообщения от Sherminator
 
Регистрация: 01.08.2012
Сообщений: 50

перед ней нет var, значит она доступна за пределами данной функции.
Ответить с цитированием
  #6 (permalink)  
Старый 01.08.2012, 14:55
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

а что не работает в чем проявляется?
Вы нигде ch и uch не обнуляете
Ответить с цитированием
  #7 (permalink)  
Старый 01.08.2012, 15:07
Аспирант
Отправить личное сообщение для Sherminator Посмотреть профиль Найти все сообщения от Sherminator
 
Регистрация: 01.08.2012
Сообщений: 50

если чекед, то проверяет только первую запись, если не чекед, то вообще функция не выполняется
Ответить с цитированием
  #8 (permalink)  
Старый 01.08.2012, 15:13
Аспирант
Отправить личное сообщение для Sherminator Посмотреть профиль Найти все сообщения от Sherminator
 
Регистрация: 01.08.2012
Сообщений: 50

вобщем 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)
};
Ответить с цитированием
  #9 (permalink)  
Старый 01.08.2012, 15:25
Аспирант
Отправить личное сообщение для Sherminator Посмотреть профиль Найти все сообщения от Sherminator
 
Регистрация: 01.08.2012
Сообщений: 50

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47