2009-10-18 5 views
0

Эй, ребята, я пытаюсь сделать небольшое дополнение к используемому веб-приложению. Прямо сейчас я пытаюсь проверить все флажки на странице, которые имеют класс .checkBox (В случае, если это необходимо, чтобы отличить/выбрать). Флажки - это потомки divs класса .someClass, это просто, что есть много div, которые имеют этот класс. Я хочу проверить коробки, которые являются потомками divs, класс которых только.someClass.Справка по выбору прототипа

Других слов:

<!-- Check this box --> 
<div class="someClass"> [...] <input type="checkbox" class="checkBox" /></div> 

<!-- But not this one --> 
<div class="someClass otherClasses lolWut"> [...] <input type="checkbox" class="checkBox" /></div> 

Помните, флажки не являются прямыми детьми, но и потомками.

Спасибо, я был бы признателен за любую помощь :)

ответ

3

Здесь вы идете:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

    <title>Check the boxes</title> 
    <script src="prototype.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
    function checkThem() { 
     // get all the .someClass divs 
     $$(".someClass").each(function(item) { 
     // filter out the ones that have additional classes 
     if(item.className == 'someClass') { 
      // get the .checkBox descendants 
      item.select('.checkBox').each(function(checkbox) { 
      // check them 
      checkbox.checked = true; 
      }); 
     } 
     }); 
    } 
    </script> 

</head> 

<body> 

    <!-- Check this box --> 
    <div class="someClass">Check: <input type="checkbox" class="checkBox" /><input type="checkbox" class="checkBox" /></div> 

    <!-- But not this one --> 
    <div class="someClass otherClasses lolWut">Don't check: <input type="checkbox" class="checkBox" /></div> 

    <!-- Check this box --> 
    <div class="someClass">Check: <input type="checkbox" class="checkBox" /><input type="checkbox" class="checkBox" /></div> 

    <br /><br /> 

    <a href="#" onclick="checkThem(); return false;">Check them.</a> 

</body> 
</html> 
+0

Я тестировал свой код в отдельный файл HTML и это сработало! Однако у меня возникли проблемы с его использованием в проекте, который я использую. Я продолжаю получать ошибку в Firebug «Указана недопустимая или недопустимая строка» code: «12», а затем «results = $ A (root.querySelectorAll (e)). Map (Element.extend); \ n" и ничего (флажки не проверяются). Флажки - это потомки, а не прямые дети, вот почему? Я использую prototype.js 1.6.1 –

+0

Не имеет значения, что они потомки (я тестировал, вставляя флажки в некоторые другие элементы). Я также тестировал prototype.js 1.6.1. Каковы фактические имена классов, о которых идет речь? Поскольку это единственные строки, это может быть источником проблемы (например, если они являются недопустимыми именами классов). –

+0

Соблюдайте другое сообщение. Я обновил прототип до прототипа 1.6.1 (только файл js), и по какой-то причине только сейчас я решил, что вернусь, чтобы решить, поможет ли это решить проблему. Возможно, это веб-приложение кэширует что-то, я не знаю. Сейчас я работаю на 1.6.0.2, но, по крайней мере, он работает. Я попытаюсь понять, почему это не сработало с 1.6.1. Тем временем, спасибо за ваше решение, прекрасно работает. –

Смежные вопросы