Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript][AJAX]pobieranie zmiennych js
Forum PHP.pl > Forum > Przedszkole
linuxoida
Witam,

Mam taki mały problem z JS, ponieważ mam napisany kalendarz w smarty(lekko pod modyfikowany), pobiera mi go ładnie ajax-em, ale nie wiem jak pobrać zmienną z elementu <a>, czy ktoś może mi pomóc?
  1. <?php
  2. function smarty_function_calendar($params, &$smarty)
  3. {
  4. extract($params);
  5. $html_result='';
  6. $time = time();
  7.  
  8. if(!isset($month))
  9. {
  10.     $month = date("n", $time);
  11. }
  12. if(!isset($year))
  13. {
  14.     $year = date("Y", $time);
  15. }
  16. if($month>1)
  17. {
  18.  $first_day_ts = mktime(0,0,0, $month, 7, $year);
  19. }
  20. else
  21.     {
  22.      $first_day_ts = mktime(0,0,0, $month, 1, $year)-1;    
  23.     }
  24. $html_result='<tr>';
  25. $day_name = array ('Pn','Wt','Śr','Cz','Pt','So','Nd');
  26. foreach($day_name as $_day_name)
  27. {
  28.   $html_result.='<td>'.$_day_name.'</td>';  
  29. }
  30. $html_result.='</tr>';
  31. $current_day=1;
  32.  $current_week=1;                    
  33.  $total_days = date("t", $first_day_ts);
  34.  $first_day = date("w",$first_day_ts);
  35.  while($current_day<=$total_days)
  36.  {
  37.   $html_result.='<tr>';
  38.   for($i=0; $i<7; $i++)
  39.   {
  40.    if((($current_week==1) && ($i>=$first_day)) || (($current_week > 1) && ($current_day<=$total_days)))
  41.    {
  42.        if($i==5)
  43.        {
  44.            //$html_result.='<td id="calendar"><a href="http://localhost/kalendarz.php?dzien='.$current_day.'&miesiac='.$month.'&rok='.$year.'" onclick="clickDay(''.$current_day.'',''.$month.'',''.$year.''); return false;" style="color:blue;">'.$current_day;
  45.            $html_result.='<td id="calendar"><a href="kalendarz.php?dzien=2" id="d'.$current_day.'" onclick="clickDay('d'.$current_day.'',''.$month.'',''.$year.''); return false;" style="color:blue;">'.$current_day;
  46.        }else
  47.            {
  48.             if($i==6)
  49.             {
  50.                 //$html_result.='<td id="calendar"><a href="http://localhost/kalendarz.php?dzien='.$current_day.'&miesiac='.$month.'&rok='.$year.'" onclick="clickDay(''.$current_day.'',''.$month.'',''.$year.''); return false;" style="color:red;">'.$current_day;
  51.                 $html_result.='<td id="calendar"><a href="#" id="d'.$current_day.'" onclick="clickDay('d'.$current_day.'',''.$month.'',''.$year.''); return false;" style="color:red;">'.$current_day;    
  52.             }else
  53.                 {
  54.                     //$html_result.='<td id="calendar"><a href="http://localhost/kalendarz.php?dzien='.$current_day.'&miesiac='.$month.'&rok='.$year.'"onclick="clickDay(''.$current_day.'',''.$month.'',''.$year.''); return false;" style="color:black;">'.$current_day;
  55.                     $html_result.='<td id="calendar"><a href="#" id="d'.$current_day.'" onclick="clickDay('d'.$current_day.'',''.$month.'',''.$year.''); return false;" style="color:black;">'.$current_day;
  56.                 }    
  57.            }
  58.        if(isset($values) && (!empty($values[$current_day])))
  59.        {
  60.            $html_result.=$values[$current_day];
  61.        }else
  62.            {
  63.                $html_result.='&nbsp;';
  64.            }
  65.            $html_result.='</a></td>';
  66.            $current_day++;
  67.    }else
  68.        {
  69.            $html_result.='<td>&nbsp;</td>';
  70.        }
  71.   }    
  72.    $html_result.='<tr>';
  73.    $current_week++;
  74.  }
  75.  $html_result.='</table>';
  76.  print $html_result;
  77. }
  78. ?>

Z góry dzięki
erix
Skoro piszesz o JS, to może podałbyś kod wynikowy? Poza tym, jaką zmienną? Z QUERY_STRING, czy atrybut?

A jeśli chodzi o przetwarzanie - getElementById, getElementsByTagName, za mało danych podałeś.
linuxoida
jeśli chodzi o js to:
  1. function clickDay(day,month,year)
  2. {
  3. var day = 0;
  4. if(document.getElementsByName("a").id == "d1")
  5. {
  6. day="1";
  7. }
  8. if(document.getElementsByName("a").id == "d2")
  9. {
  10. day="2";
  11. }
  12. var month = document.getElementById("month").value;
  13. var year = document.getElementById("year").value;
  14. http.open("GET","kalendarz.php?dzien="+day+"&miesiac="+month+"&rok="+year+"", true);
  15. http.onreadystatechange = calendarhtml;
  16. http.send(null);
  17. document.getElementById("data").value=day;
  18. }

a chcę pobrać z nazwę id atrybutu która jest ustawiona od 1 do ostatniego dnia miesiaca czyli id="d1", id="d2"... a wynik który zawsze dostawałem to wartość z atrubutu id="d1"
erix
Cytat
a chcę pobrać z nazwę id atrybutu

Napisz po polsku... Czytałem kilka razy i wciąż nie rozumiem...
linuxoida
w pliku smarty wyświetlają się daty po kolei od 1 do ostatniego dnia miesiąca jak również atrybut id elementu <a> z dodaną wartością d (id="d".'$current_day'") i teraz nie wiem jak pobrać konkretną nazwę kliknietego id i jej wartość z kalendarza (np jak kliknę na 4 to ma pobrać wartość z getElementById("d4"))
erix
Kod
var links = document.getElementById('rodzic').getElementsByTagName('a');

for(i=0;i<links.length;i++){
   links[i].onclick = function(e){
      e.preventDefault();
      // this.id - a co z tym zrobić, to pogłówkuj
   }
}
linuxoida
szczerze powiem to nie mam, zadnego pomysłu jak to zrobić, nie wiem możw cos przekombinowalem. A mam pytanie, może ktoś z Was zna jakiś taki skrypcik z kalendarza. który mógłby pokazać?

Z góry dzieki.

a tak wogole to sobie poradziłem. nie trzeba żadnej pętli for, tylko sam po naciśnięciu przekazuje tą wartość
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.