Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Двойное условие


Автор: Castro 5.10.2007, 13:49
Возник вот вопрос: функция должна выполнять определённые действия(читать значения отрибутов  у элементов атрибуты ).
Но она должна пропускать  элементы и  которых установлено состояние disabled і не должна позволять читать значение value у всех disabled  элементов типа  input(зачем есть разрешение на это).
Сделал так
Код

<script>
this.getElementCount = function(doc, type, pattern, attr)
......

if (!formUtils.isDisabled(doc.forms[i].elements[j],attr)) {
                            if (doc.forms[i].elements[j].type.toLowerCase() == inputPar[k].toLowerCase()) {
                                allRequestedElementCount++;
                            }
                        }
.......
this.isDisabled = function (element,attr)
    {
        if(element.disabled || attr=="value")
        {
            return true;
        }
    return false;
    }
</script>

но помоему условие element.disabled || attr=="value" не правильно. Как правильно организовать 2е условие?? 

Автор: Pokoinik 5.10.2007, 13:52
в смысле не правильное?
с точки зрения синтаксиса?

Автор: Castro 5.10.2007, 13:53
Внезапно пришла мысль:
Код

if(element.disabled || (attr=="value" && element.disabled))
Это будет правильно?

Добавлено через 3 минуты и 4 секунды
Нет. С точки зрения логики-если у меня передаётся атрибут value в самом начале, то элемент не подсчитается, потому что в проверке в isDisabled есть оператор "ИЛИ" и он выполниться полюбому. Надеюсь я  правильно понял суть того что творится в этой поверке

Автор: Pokoinik 5.10.2007, 13:59
ну сам подумай...
твой код в ифе будет выполняться в следующих случаях
1. element.disabled == true
2. attr=="value"  и  element.disabled== true

при element.disabled== false код не выполнится

Автор: solenko 5.10.2007, 14:08
Что-то у вас в самой постановке не то.
Если элемент disabled, то не важно какой аттрибут мы читаем -- все равно функция не пропустит. 

Автор: Castro 5.10.2007, 14:11
Попродуйте и disabled елемента прочитать атрибут value- он прочитается ведь, а мне этого не нужно

Автор: dsCode 5.10.2007, 14:22
Castro, логику сначала правильную опишите на словах (а после этого и сами условие напишите). А так - действительно, не важно - валуе не валую - проверка на дизаблед уже не будет обрабатывать элемент.
Цитата(Castro @  5.10.2007,  13:49 Найти цитируемый пост)
Но она должна пропускать  элементы и  которых установлено состояние disabled


if ( !element.disabled ) {
  // обрабатываем элемент
}

Автор: solenko 5.10.2007, 14:24
Цитата

должна пропускать  элементы и  которых установлено состояние disabled і не должна позволять читать значение value у всех disabled 

Второе условие может выполниться тольк если выполнено первое.
получается, что сначала запрещаем чтение любого аттрибута у disabled элементов.
Потом отдельным условием запрещаем читать value у disabled элементов.

В чем смысл?

Автор: Castro 5.10.2007, 14:34
Смысл в том чтобы посчитать количество эелементов заданного типа и заданного атрибута(наприм у скольких кнопок атритубут value==OK)
НО! ИЗвините, только что понял что придумал велосипед. Использовал 
if ( !element.disabled ) {
  // обрабатываем элемент
} 
да и перестал парится. Дело втом что там было много кода разной вложености и я по наивности решил что проще решить так как я решил. К тому же просили сделать эту порверку отдельной функциейОно конечно работает, но зачем усложнять себе жизнь! Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)