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

HTML+CSS+JavaScript

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

 

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

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

тема: Java Script и изменение цвета ячейки
 
 автор: vinni_13   (21.07.2006 в 13:07)   письмо автору
 
 

немогу понять почему не срабатывает скрипт. Идея такая: когда страница загрузилась, нужно что бы цвет некоторой ячейки изменился от черного к красному через промежуточные цвета. Может кто подскажет как реализовать лучше всего?

<head>

<style>  
  td.mytd0 {background-color:#808080} 
  td.mytd1 {background-color:#000000} 
  td.mytd2 {background-color:#400000}
  td.mytd3 {background-color:#800000}
  td.mytd4 {background-color:#bf0000}
  td.mytd5 {background-color:#ff0000}    
</style>
</head>

<body>
<SCRIPT LANGUAGE="javascript">
  var a = ["mytd1","mytd2","mytd3","mytd4","mytd5"];
  i=0;
  function f(h)
  {
    if (i<5){h.className = a[i]; i++;} else{ break;}
    setTimeout(f(h),100);    
  }
</SCRIPT>    
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
  <tr>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td height="250" width="500">
        <table height="100%" width="100%" border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td class="mytd0"><SCRIPT LANGUAGE="javascript">f(this);</SCRIPT></td>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
          </tr>
          <tr>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
            <td class="mytd0"> </td>
          </tr>
       </table></td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
  </tr>
</table>
</body>
</html>

   
 
 автор: 12345   (21.07.2006 в 13:21)   письмо автору
 
   для: vinni_13   (21.07.2006 в 13:07)
 

А ошибки браузер не выдаёт? break; должен быть внутри цикла.
Когда пишете SCRIPT LANGUAGE="javascript">f(this);</SCRIPT>, this будет, очевидно, window со всеми последствиями.

Можно тут, конечно, цикл по onload, но есть способ проще - написать в самом конце <style> со сменой цвета.

   
 
 автор: Vinni_13   (21.07.2006 в 14:06)   письмо автору
 
   для: 12345   (21.07.2006 в 13:21)
 

когда вешаю на событие, например на onMouseOver, то сработывает на половину, возникают проблемы с таймером

   
 
 автор: 12345   (21.07.2006 в 14:20)   письмо автору
 
   для: Vinni_13   (21.07.2006 в 14:06)
 

Ну скрипт написан неверно, точнее вообще не написан, я же говорил.
А вешать надо на onload, судя по постановке

   
 
 автор: Vinni_13   (21.07.2006 в 14:47)   письмо автору
 
   для: 12345   (21.07.2006 в 14:20)
 

опытным путем я выяснил что:
1 - this это текущий объект, в данном случае <td>
2 - onLoad в теге <td> неработает

PS: не бейте меня сильно, если я не прав...

   
 
 автор: RMW   (21.07.2006 в 19:26)   письмо автору
 
   для: Vinni_13   (21.07.2006 в 14:47)
 

Вот рабочий вариант:

<html>
<head> 
<style>   
  td.mytd0 {background-color:#808080}  
  td.mytd1 {background-color:#000000}  
  td.mytd2 {background-color:#400000} 
  td.mytd3 {background-color:#800000} 
  td.mytd4 {background-color:#bf0000} 
  td.mytd5 {background-color:#ff0000}     
</style>

<SCRIPT LANGUAGE="javascript"> 
  var a = ["mytd1","mytd2","mytd3","mytd4","mytd5"]; 
  i=0; 
  function f()
  { 
    var h = document.getElementById('myTD');
    if (i<5){h.className = a[i]; i++;} else{return;} 
    setTimeout('f()',100);     
  } 
</SCRIPT>

 </head> 
<body> 
     
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000"> 
  <tr> 
    <td> </td> 
    <td> </td> 
  </tr> 
  <tr> 
    <td height="250" width="500"> 
        <table height="100%" width="100%" border="0" cellpadding="0" cellspacing="0"> 
          <tr> 
            <td class="mytd0" id="myTD"></td> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
          </tr> 
          <tr> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
            <td class="mytd0"> </td> 
          </tr> 
       </table></td> 
    <td> </td> 
  </tr> 
  <tr> 
    <td> </td> 
    <td> </td> 
  </tr> 
</table>

<SCRIPT LANGUAGE="javascript">f()</SCRIPT>
 
</body> 
</html>

Уж не знаю как вы выяснили, что this ссылается именно на td,
но в любом случае до полной загрузки таблицы с ней лучше не работать.

   
 
 автор: Vinni_13   (22.07.2006 в 14:48)   письмо автору
 
   для: vinni_13   (21.07.2006 в 13:07)
 

Большое спасибо, уже разобрался =)

   
Rambler's Top100
вверх

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