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


Автор: beglec 27.4.2008, 09:01
Доброе время суток.
в тексте есть множество.
<span id="Rate1"></span>
<span id="Rate1"></span>
<span id="Rate1"></span>
<span id="Rate2"></span>
<span id="Rate2"></span>
<span id="Rate1"></span>
<span id="Rate1"></span>
<span id="Rate2"></span>

Как сделать чтобы при помощи Javascript, все Rate1 заменились на одно значение, а Rate2 на второе значение и т.д.
заранее благодарен.
document.all("Rate1").length почему ничего не показывает :(

Исправляет только первый элемент.

Автор: Fortop 27.4.2008, 14:39
ID должен быть уникальным для всего документа. и никак иначе

Автор: bars80080 28.4.2008, 10:37
ну вот так: 
Код

<html>
<body>
<div id="qw">
<span title="Rate1"></span>
<span title="Rate1"></span>
<span title="Rate1"></span>
<span title="Rate2"></span>
<span title="Rate2"></span>
<span title="Rate1"></span>
<span title="Rate1"></span>
<span title="Rate2"></span>
</div>
<script>
var divs = document.getElementById('qw');
for(i = 0; i < divs.getElementsByTagName('span').length; i++) {
    el = divs.getElementsByTagName('span')[i];
    if(el.title == 'Rate1') el.innerHTML = '1 ';
    else el.innerHTML = '2 '; 
} 
</script>
</body>
</html>

у меня вопрос в продожение, почему если я вставляю свой атрибут (скажем <span sa="Rate1"></span>), то он нормально схватывается в ИЕ6, но не хочет в ФФ и опере?

Автор: SelenIT 28.4.2008, 10:42
Цитата(bars80080 @  28.4.2008,  10:37 Найти цитируемый пост)
почему если я вставляю свой атрибут (скажем <span sa="Rate1"></span>), то он нормально схватывается в ИЕ6, но не хочет в ФФ и опере?

Наверное, дело в http://xpoint.ru/know-how/JavaScript/Atributyi?8.

Автор: bars80080 28.4.2008, 12:35
интересная статейка, 
непонятно только почему разработчики w3c стали городить эту лажу с различием атрибутов и свойств. какие у них принципиальные отличия? почему было не приравнять их, и прописать официальное название всем свойствам. (типа .value - это значение в текстовом поле, а .Value - это вводимое пользователем свойство/атрибут)

Автор: SelenIT 28.4.2008, 12:41
Цитата(bars80080 @  28.4.2008,  12:35 Найти цитируемый пост)
какие у них принципиальные отличия?

Ну как же. Атрибут - фактически часть разметки (поэтому и значением может быть только строка, и регистронезависимость в HTML). А свойство - это как обычно в JS, можно навесить практически что угодно (объект любого типа) на что угодно, независимо от того, имеет это какое-либо отношение к разметке или нет...

Автор: bars80080 28.4.2008, 12:45
всё равно не вижу различия, особенно, если мы стремимся свести html к xml
точнее зачем было вводить это различие, теперь возникает куча неудобств с использованием доп.функций getAttribute setAttribute, вместо простой точки и знака равно

Автор: SelenIT 28.4.2008, 12:53
bars80080, ну а как сериализовать в атрибут сложный самописный объект (ну или даже какой-нибудь Date с расширенным прототипом)? Через встроенный toString()? Ох, куча инфы потеряется... К тому же, даже в XML типы не полностью совпадают с JS-ными.

Цитата(bars80080 @  28.4.2008,  12:45 Найти цитируемый пост)
теперь возникает куча неудобств с использованием доп.функций getAttribute setAttribute, вместо простой точки и знака равно 

Так эти вещи не отменяют и не всегда заменяют друг друга. Скажем, при динамической работе с формами явно нужно работать с нечто.value, а не нечто.setAttribute('value','что-то'). Вроде же в статье описано, что на что влияет и когда что нужно. Как раз из-за попытки скрестить их воедино (как в IE) происходит неразбериха...

Автор: bars80080 28.4.2008, 13:06
имхо, проблема здесь наоборот, т.е. читать надо не сверху вниз а снизу вверх
проблема из-за того, что как раз решили что это не одно и то же.

почему было не сделать так. свойство - есть свойство, и мы работаем с ним как нужно, а атрибут это своего рода расширение, т.е. добавление любительских свойств (собственно, оно же в js и есть), и пусть браузер разбирается с ними по своему, а js по своему

к примеру, не составляет же труда добавить некему объекту свойство: obj.dps, почему было не сделать обратной зависимости: 
<div dps="qw"> - автоматич. присвоение свойства

имхо дальше моё разумение не позволяет нащупать тонкую принципиальную грань между свойствами и атрибутами, кроме тех, которые придумали себе w3c

Автор: beglec 28.4.2008, 13:15
Цитата(bars80080 @ 28.4.2008,  10:37)
да все сработало.

 Спасибо. То что нужно

Автор: SelenIT 28.4.2008, 14:10
Цитата(bars80080 @  28.4.2008,  13:06 Найти цитируемый пост)
<div dps="qw"> - автоматич. присвоение свойства

А нужно ли так жестко вшивать чисто скриптовую логику (ведь свойства - объекты скрипта) в разметку? Особенно в наши дни, когда даже от onclick-ов  и т.п. в коде стараются избавляться всеми силами (через разные вариации addEvent и т.п.)?

Автор: bars80080 28.4.2008, 14:16
Цитата(SelenIT @  28.4.2008,  14:10 Найти цитируемый пост)
А нужно ли 

я не отвечу

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