Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поменяться классами двум тегам span ; jQuery
 
 автор: starpom   (25.10.2010 в 14:52)   письмо автору
 
 

на странице много тегов span, у половины класс а , у второй класс б, при клике на ссылку с id=change, надо чтоб спаны махнулись классами, подскажите как.

  Ответить  
 
 автор: coloboc66   (25.10.2010 в 15:27)   письмо автору
 
   для: starpom   (25.10.2010 в 14:52)
 

Как-то так:

<a id="change" onclick="func()">Click me</a>
<script>
function func()
{
var obj=document.getElementsByTagName('span');
for (var i=0;i<obj.length;i++) {
if(obj[i].class=="a") obj[i].class="b";
if(obj[i].class=="b") obj[i].class="a";
}
}
</script>

  Ответить  
 
 автор: Lelik   (25.10.2010 в 15:34)   письмо автору
 
   для: coloboc66   (25.10.2010 в 15:27)
 

только не class, а className

<a id="change" onclick="func()">Click me</a>
<script>
function func()
{
var obj=document.getElementsByTagName('span');
for (var i=0;i<obj.length;i++) {
if(obj[i].className=="a") obj[i].className="b";
if(obj[i].className=="b") obj[i].className="a";
}
}
</script> 

  Ответить  
 
 автор: coloboc66   (25.10.2010 в 16:07)   письмо автору
 
   для: Lelik   (25.10.2010 в 15:34)
 

только не class, а className - вот тут меня как-раз сомнение и брало... Но ведь стили я назначаю именно по class:
<span class="a">Text</span>
Почему тогда в скрипте нужно использовать className ???

  Ответить  
 
 автор: Lelik   (25.10.2010 в 16:35)   письмо автору
 
   для: coloboc66   (25.10.2010 в 16:07)
 

спецификация такая. правильно использовать className.

http://www.w3schools.com/jsref/prop_html_classname.asp

  Ответить  
 
 автор: starpom   (25.10.2010 в 17:18)   письмо автору
 
   для: Lelik   (25.10.2010 в 16:35)
 

Спасибо, классы вроде меняються, но в некоторых спанах непонятно почему добавляеться
style="color: серый", такой же цвет шрифта устанавливаеться, как и бэграунд таблицы, внутри которой эти спаны и соответственно текст не виден. Откуда береться этот style. В html его и подавно нет.?

  Ответить  
 
 автор: coloboc66   (25.10.2010 в 17:28)   письмо автору
 
   для: Lelik   (25.10.2010 в 16:35)
 

То есть и в скриптах, и в html правильно использовать className вместо class?

  Ответить  
 
 автор: AlexSol   (25.10.2010 в 16:47)   письмо автору
 
   для: starpom   (25.10.2010 в 14:52)
 

jQuery("#change").click(function(){jQuery("span").toggleClass("a").toggleClass("b");return false})

  Ответить  
 
 автор: starpom   (25.10.2010 в 17:35)   письмо автору
 
   для: AlexSol   (25.10.2010 в 16:47)
 

Эта строка по приятней выглядит, и это уже то, что и хотелось (в смысле jQuery), но опять же все элементы меняют класс как надо, но у некорых появляеться

<span class="en" style="color: rgb(134, 141, 149);"> слон</span>


вот такой style, который все портит

  Ответить  
 
 автор: starpom   (25.10.2010 в 17:38)   письмо автору
 
   для: starpom   (25.10.2010 в 17:35)
 

Уточню что меняються классы с en на ru, видим что слово внутри спана русское, а класс en, тоесть класс нормально поменялся, а этот стиль непонятно откуда взялся и задал слову цвет , как фон. Что за мазефака

  Ответить  
 
 автор: starpom   (25.10.2010 в 18:36)   письмо автору
 
   для: AlexSol   (25.10.2010 в 16:47)
 

Вот это весь файл jQery

$(function() {
    $('td').mouseover(function(){
                                  $(this).css('background','#008000').children('span.ru').css('color', '#FFFF99');
                               });
    
    $('td').mouseout(function(){
                                  $(this).css('background','#868D95').children('span.ru').css('color', '#868D95');
                               })
    
    jQuery("#change").click(function(){jQuery("span").toggleClass("ru").toggleClass("en");return false})
     
})


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

  Ответить  
 
 автор: AlexSol   (25.10.2010 в 21:24)   письмо автору
 
   для: starpom   (25.10.2010 в 18:36)
 

<style>
.f{color:#FFFF99}
</style>

$(function() { 
    $('td').mouseover(function(){ 
                                  $(this).css('background','#008000').children('span.ru').addClass('f'); 
                               }); 
     
    $('td').mouseout(function(){ 
                                  $(this).css('background','#868D95').children('span.ru').removeClass('f'); 
                               }) 
     
    jQuery("#change").click(function(){jQuery("span").removeClass('f').toggleClass("ru").toggleClass("en");return false}) 
      
})

  Ответить  
 
 автор: starpom   (25.10.2010 в 21:56)   письмо автору
 
   для: AlexSol   (25.10.2010 в 21:24)
 

Спасибо, то что надо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования