Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP/JS Prblemik z onMouseOver
Forum PHP.pl > Forum > PHP
Waloch016
A więc najpierw kod:

  1. <script type="text/javascript">
  2. function show_auto(id)
  3. {
  4. document.getElementById('auto').style.visibility="visible";
  5. }
  6.  
  7. function hide_auto(id)
  8. {
  9. document.getElementById('auto').style.visibility="hidden";
  10. }
  11. </script>
  12. <?php
  13.  
  14. include('includes/gora.php');
  15.  
  16. $gracz = mysql_fetch_array(mysql_query("SELECT kasa, samochodID FROM users WHERE id='$id_g'"))or die(mysql_error());
  17. if(!($_GET['kup'])){
  18. ?>
  19. <table>
  20. <tr>
  21. <td><img src="images/salon.jpg"</td>
  22. <td valign="top">Witaj drogi kierowco! Co? Samochód wyścigowy ?!? Niestety nie mamy takich. Ale skoro chcesz się ścigać to napewno znasz się na samochodach. Tak? No to nie ma żadnego problemu. Zakupiony samochód możesz podrasować aby mieć lepsze osiągi. Chodź pokażę Ci co moge to, co mogę zaoferować.</td>
  23. </tr>
  24. </table><br><br>
  25. <table>
  26. <?
  27.  
  28. $samochod = mysql_query("SELECT * FROM samochody")or die(mysql_error());
  29. while($sam = mysql_fetch_assoc($samochod)){
  30. echo"<tr><img src='samochody/". $sam['foto'] ."' onMouseOver='show_auto(".$sam['id'].")' onMouseOut='hide_auto(".$sam['id'].")'>".
  31. "<div id='auto_".$sam['id']."'>Nazwa: " . $sam['nazwa'] . "<br>
  32. Opis: " . $sam['opis'] . "<br>
  33. Vmax: " . $sam['vmax'] . " km/h<br>
  34. do100: " . $sam['vsto'] . " s<br>
  35. Bak: " . $sam['paliwo'] . " l<br>
  36. Cena: " . $sam['cena'] . " zł<br>";
  37.  
  38. if($gracz['samochodID'] > 0){
  39. echo "<font color='red'>Posiadasz samochód. Sprzedaj aktualny aby kupić nowy.</font>";
  40. }
  41. elseif($gracz['kasa'] >= $sam['cena']){
  42. echo"<a href='salon.php?kup=kup&id=". $sam['id']."'>Kup Samochód</a>";
  43. }
  44. else{
  45. echo "<font color='red'>Nie stać Cię!</font>";
  46. }
  47. echo"</tr></div>";
  48. }
  49. ?>
  50. </table>


Do tego CSS:

  1. #auto{
  2. margin-top:-200px;
  3. width: 200px;
  4. height: 200px;
  5. background-color: black;
  6. visibility:hidden;
  7. }



Zmianiłem na taki kod jednakże teraz pokazuje mi tekst na stale pod obrazkami.
markuz
Zamiast <div id="auto"> wstaw <div id="auto_{ID AUTA}">
Zdarzenia on i out wywołuj z parametrem id czyli np. onMouseOver='show_auto({ID AUTA})'
W nazwach funkcji dodaj parametr id czyli function show_auto(id)
I w treści zmień auto na auto_{ID}

Edit.
Już jesteś blisko. Jednak nadal nie widzę w "ciele" funkcji id które przekazujesz w parametrze (javascript).
Zauważ, że wcześniej twój div miał id = "auto", przez co twój CSS działał poprawnie, teraz twoje ID jest różne dlatego warto dodać klasę to tego diva np.
<div id="auto_{ID AUTA}" class="auto_desc"> i wtedy w CSS zamiast #auto wstaw .auto_desc.

PS. Następnym razem pisz nowy post a nie edytuj pierwszy żebym widział, że coś zmieniłeś.
Waloch016
  1. <script type="text/javascript">
  2. function show_auto(id)
  3. {
  4. document.getElementById(id).style.visibility="visible";
  5. }
  6.  
  7. function hide_auto(id)
  8. {
  9. document.getElementById(id).style.visibility="hidden";
  10. }
  11. </script>
  12. <?php
  13.  
  14. include('includes/gora.php');
  15.  
  16. $gracz = mysql_fetch_array(mysql_query("SELECT kasa, samochodID FROM users WHERE id='$id_g'"))or die(mysql_error());
  17. if(!($_GET['kup'])){
  18. ?>
  19. <table>
  20. <tr>
  21. <td><img src="images/salon.jpg"</td>
  22. <td valign="top">Witaj drogi kierowco! Co? Samochód wyścigowy ?!? Niestety nie mamy takich. Ale skoro chcesz się ścigać to napewno znasz się na samochodach. Tak? No to nie ma żadnego problemu. Zakupiony samochód możesz podrasować aby mieć lepsze osiągi. Chodź pokażę Ci co moge to, co mogę zaoferować.</td>
  23. </tr>
  24. </table><br><br>
  25. <table>
  26. <?
  27.  
  28. $samochod = mysql_query("SELECT * FROM samochody")or die(mysql_error());
  29. while($sam = mysql_fetch_assoc($samochod)){
  30. echo"<tr><img src='samochody/". $sam['foto'] ."' onMouseOver='show_auto(id)' onMouseOut='hide_auto(id)'>".
  31. "<div id='auto_".$sam['id']."' class='auto_desc'>Nazwa: " . $sam['nazwa'] . "<br>
  32. Opis: " . $sam['opis'] . "<br>
  33. Vmax: " . $sam['vmax'] . " km/h<br>
  34. do100: " . $sam['vsto'] . " s<br>
  35. Bak: " . $sam['paliwo'] . " l<br>
  36. Cena: " . $sam['cena'] . " zł<br>";
  37.  
  38. if($gracz['samochodID'] > 0){
  39. echo "<font color='red'>Posiadasz samochód. Sprzedaj aktualny aby kupić nowy.</font>";
  40. }
  41. elseif($gracz['kasa'] >= $sam['cena']){
  42. echo"<a href='salon.php?kup=kup&id=". $sam['id']."'>Kup Samochód</a>";
  43. }
  44. else{
  45. echo "<font color='red'>Nie stać Cię!</font>";
  46. }
  47. echo"</tr></div>";
  48. }
  49. ?>
  50. </table>


Ma tak dalej nie wiem jak gówno rozwiązać próbowałem na kilka sposobów zmieniać i dalej nic... tekst sie schował ale po najechaniu się nie pokazuje...
markuz
document.getElementById(id) !== "<div id='auto_".$sam['id']."' - Widzisz różnicę?
Waloch016
Tak widze ze id sie roznia. ok. Z tym ze staralem sie to id wpisac tam na kilka sposobow lacznie z <?echo 'auto_".$sam['id']."'?> i nic mi to nie dało dalej nie pokazuje tekstu na obrazkach.
markuz
Załóżmy, że ID samochodu to 123 wtedy twój div będzie miał id == auto_123
A ty szukasz elementu o id == 123 który nie istnieje.
Więc można dojść do wniosku, że auto_123 != 123 - zgadza się?

Edit. Podpowiem, że brakuje Ci czegoś w funkcji JavaScript.
Waloch016
Ja to wszystko rozumiem tylko że to mi nie wyświetla napisów.
markuz
Pokaż kod po zamianach (PHP/HTML/JS + CSS)
Waloch016
  1. <script type="text/javascript">
  2. function show_auto()
  3. {
  4. document.getElementById !== <?echo 'auto_'.$sam['id'].''?>.style.visibility="visible";
  5. }
  6.  
  7. function hide_auto()
  8. {
  9. document.getElementById !== <?echo 'auto_'.$sam['id'].''?>.style.visibility="hidden";
  10. }
  11. </script>

Z Javascript jestem bardzo słaby prawie nic nie umiem. robie to bo tak wyszlo akurat. mysalem ze idzie to prosciej....
markuz
Ehh.. Dam Ci gotowe rozwiązanie:

[JAVASCRIPT] pobierz, plaintext
  1. function hide_auto(id)
  2. {
  3. document.getElementById("auto_" + id).style.visibility="hidden";
  4. }
[JAVASCRIPT] pobierz, plaintext


To samo dla show_auto.
Jeżeli nic nie popsułeś w PHP/CSS to powinno działać.
Waloch016
  1. <script type="text/javascript">
  2. function show_auto(id)
  3. {
  4. document.getElementById("auto_" + id).style.visibility="visible";
  5. }
  6.  
  7. function hide_auto(id)
  8. {
  9. document.getElementById("auto_" + id).style.visibility="hidden";
  10. }
  11. }
  12. </script>
  13. <?php
  14.  
  15. include('includes/gora.php');
  16.  
  17. $gracz = mysql_fetch_array(mysql_query("SELECT kasa, samochodID FROM users WHERE id='$id_g'"))or die(mysql_error());
  18. if(!($_GET['kup'])){
  19. ?>
  20. <table>
  21. <tr>
  22. <td><img src="images/salon.jpg"</td>
  23. <td valign="top">Witaj drogi kierowco! Co? Samochód wyścigowy ?!? Niestety nie mamy takich. Ale skoro chcesz się ścigać to napewno znasz się na samochodach. Tak? No to nie ma żadnego problemu. Zakupiony samochód możesz podrasować aby mieć lepsze osiągi. Chodź pokażę Ci co moge to, co mogę zaoferować.</td>
  24. </tr>
  25. </table><br><br>
  26. <table>
  27. <?
  28.  
  29. $samochod = mysql_query("SELECT * FROM samochody")or die(mysql_error());
  30. while($sam = mysql_fetch_assoc($samochod)){
  31. echo"<tr><img src='samochody/". $sam['foto'] ."' onMouseOver='show_auto(".$sam['id'].")' onMouseOut='hide_auto(".$sam['id'].")'>".
  32. "<div id='auto_".$sam['id']."' class='auto_desc'>Nazwa: " . $sam['nazwa'] . "<br>
  33. Opis: " . $sam['opis'] . "<br>
  34. Vmax: " . $sam['vmax'] . " km/h<br>
  35. do100: " . $sam['vsto'] . " s<br>
  36. Bak: " . $sam['paliwo'] . " l<br>
  37. Cena: " . $sam['cena'] . " zł<br>";
  38.  
  39. if($gracz['samochodID'] > 0){
  40. echo "<font color='red'>Posiadasz samochód. Sprzedaj aktualny aby kupić nowy.</font>";
  41. }
  42. elseif($gracz['kasa'] >= $sam['cena']){
  43. echo"<a href='salon.php?kup=kup&id=". $sam['id']."'>Kup Samochód</a>";
  44. }
  45. else{
  46. echo "<font color='red'>Nie stać Cię!</font>";
  47. }
  48. echo"</tr></div>";
  49. }
  50. ?>
  51. </table>


Dalej nic.

a to CSS:

  1. .auto_desc{
  2. margin-top:-200px;
  3. width: 200px;
  4. height: 200px;
  5. background-color: black;
  6. visibility:hidden;
  7. }
markuz
Spróbuj zrobić to w ten sposób:
http://jsfiddle.net/bq4g02um/
Waloch016
A więc tak:

  1. <script type="text/javascript">
  2. var auto = {
  3.  
  4. show: function(id) {
  5. var el = document.getElementById("auto_" + id);
  6. el.style.display = "block";
  7. },
  8.  
  9. hide: function(id) {
  10. var el = document.getElementById("auto_" + id);
  11. el.style.display = "none";
  12. }
  13. }
  14. </script>
  15. <?php
  16.  
  17. include('includes/gora.php');
  18.  
  19. $gracz = mysql_fetch_array(mysql_query("SELECT kasa, samochodID FROM users WHERE id='$id_g'"))or die(mysql_error());
  20. if(!($_GET['kup'])){
  21. ?>
  22. <table>
  23. <tr>
  24. <td><img src="images/salon.jpg"</td>
  25. <td valign="top">Witaj drogi kierowco! Co? Samochód wyścigowy ?!? Niestety nie mamy takich. Ale skoro chcesz się ścigać to napewno znasz się na samochodach. Tak? No to nie ma żadnego problemu. Zakupiony samochód możesz podrasować aby mieć lepsze osiągi. Chodź pokażę Ci co moge to, co mogę zaoferować.</td>
  26. </tr>
  27. </table><br><br>
  28. <table>
  29. <?
  30.  
  31. $samochod = mysql_query("SELECT * FROM samochody")or die(mysql_error());
  32. while($sam = mysql_fetch_assoc($samochod)){
  33. echo"<tr><img src='samochody/". $sam['foto'] ."' onMouseOver='auto.show(" . $sam['id'] . ")' onMouseOut='auto.hide(" . $sam['id'] . ")'>".
  34. "<div id='auto_".$sam['id']."' class='auto_desc'>Nazwa: " . $sam['nazwa'] . "<br>
  35. Opis: " . $sam['opis'] . "<br>
  36. Vmax: " . $sam['vmax'] . " km/h<br>
  37. do100: " . $sam['vsto'] . " s<br>
  38. Bak: " . $sam['paliwo'] . " l<br>
  39. Cena: " . $sam['cena'] . " zł<br>";
  40.  
  41. if($gracz['samochodID'] > 0){
  42. echo "<font color='red'>Posiadasz samochód. Sprzedaj aktualny aby kupić nowy.</font>";
  43. }
  44. elseif($gracz['kasa'] >= $sam['cena']){
  45. echo"<a href='salon.php?kup=kup&id=". $sam['id']."'>Kup Samochód</a>";
  46. }
  47. else{
  48. echo "<font color='red'>Nie stać Cię!</font>";
  49. }
  50. echo"</tr></div>";
  51. }
  52. ?>
  53. </table>


i CSS:

  1. .auto_desc{
  2. margin-top:-200px;
  3. width: 200px;
  4. height: 200px;
  5. background: #000 url('images/no-img.png');
  6. display:none;
  7. }


W zasadzie działa z małymi zastrzeżeniami.

1.: W dalszym ciągu nie wyświetla tła.
2.: w ramach nauki objaśniłbyś mi to JS?? co to var itp??

Edit: strałem się tak: el.className = 'auto_desc';
Niestety nie działa.
markuz
W ramach nauki polecam kursjs.pl wink.gif
Nie wyświetla tła bo pewnie podałeś złą ścieżkę.
el.className = 'auto_desc'; - Chcesz przypisać elementowi klasę którą już ma - więc jaki to ma sens?
Waloch016
Ścieżka jest ok bo nadaje normalnie margin-top:-200
Dodaje też wymiary 200x200
Dodaje też kolor tekstu czyt.: orange.

Jedyne ktore nie działa to background lub background-color.

Edit: ok juz wsio wiem.
Czarny background wyświetla się pod obrazkiem a tekst na obrazku. diwne ale rozwiąże.

Edit: Jeśli by to miało kiedyś komuś pomc to pozycja absolutna załatwiła sprawę.
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.