[JS] Strona nie działa w IE 6.0, działa w Operze i Firefoxie

0

Witam,
Mój skrypt to połączenie PHP + MYSQL, ktore przez SAJAX-a przekazuje dane do Javascript.
Jest to formularz, do którego jezeli wprowadzi sie jakąs fraze to wyszukuje ją w bazie i zwraca.

<?
// Skrypt PHP

return $tablica;
sajax_init();
sajax_export("wyszukaj");
sajax_handle_client_request();
?>


<html>
<head>
<script>
<? sajax_show_javascript(); ?>
  
function wyswietl_rezultat(rezultat) {
var i=0
document.getElementById('wynik').innerHTML = "";
while (rezultat[i] != undefined)
{
document.getElementById('wynik').innerHTML  += "<tr><td onclick =\"document.getElementById('id').value ='" + rezultat[i]+ "'\" onmouseover=\"this.style.background='#87CEFA'\" onmouseout=\"this.style.background=''\">"  + rezultat[i] +  "</td></tr>";
i++
}}
  
function wykonaj_funkcje(id) {
if (id.length >= 2)
x_wyszukaj(id, wyswietl_rezultat);
else
document.getElementById('wynik').innerHTML = "";
}

</script>
</head>

<body>
<input type="text" onkeyup= "wykonaj_funkcje(document.getElementById('id').value);" id="id" ><br>
<table id = "wynik"></table>
</body>
</html>

Niestety skrypt nie działa w Internet Explorer 6, a także 7. Pokazuje sie formularz, ale po wpisaniu frazy nie zwraca żadnych danych. Natomiast bezproblemów działa w Operze i FF.

Gdzie popełniłem błąd?

0

Pod IE właściwość innerHTML dla tabel ( czyli elementów table, tbody, tr, thead, tfoot ) jest tylko do odczytu i nie można jej zmienić. Możesz zmieniać jedynie pojedyncze komórki, czyli td.

0

Rzeczywiście to jego wina, dzięki.
W takim razie jak inaczej moge zastąpić innerHTML?

0

Po doświadczeniach w pracy, polecam jQuery i jego metodę append. Działa także dla tabeli pod IE.

$("id_tabeli").append("<tr><td>...</td><td>...</td></tr>")

Powinno działać.

0

Wstawiłem: <script type="text/javascript" src="jquery.js"></script>
Zgodnie z instrukcjami na stronie, oczywiscie jquery.js jest w tym samym folderze co mój skrypt.
Zamiast: document.getElementById('wynik').innerHTML........
Wstawiłem:$("wynik").append("<tr><td>jakiś tekst</td></tr>")

<ort>w ogóle </ort>żadne dane nie sa przekazywane do tabeli.
Niewiem czemu :/

0

Cóż, sprawdziłem - ja wstawiałem komórki tylko do wierszy tabeli, natomiast całych wierszy do tabeli nigdy.

tr = ten_konkretny_wiersz_tabeli;
$(tr).append("<td>troche</td><td> w nim </td><td>komorek</td>");
0

Nie łapie cos... o co chodzi z tym Appendem, a nie widze zadnej dokumentacji.

U mnie:
document.getElementById('wynik').innerHTML +=
W pętli while za każdym razem dopisuje do 'wynik' następny wiersz.
Następnie był on wyswietlany poza kodem jako przypisanie id tabeli czyli

Twój sposób przypisuje do zmiennej tr za każdym razem nowy wiersz, czyli musi być w pętli i czy musi wyglądać tak??
tr = "<tr><td onclick =\"document.getElementById('id').value ='" + rezultat[i]+ "'\" onmouseover=\"this.style.background='#87CEFA'\" onmouseout=\"this.style.background=''\">" + rezultat[i] + "</td></tr>";

A potem niewiem gdzie dać instrukcje:
$(tr).append("<td>troche</td><td> w nim </td><td>komorek</td>");
I co do środka wpisać...

0

Wywaliłem tabele i teraz moge wyświetlać, później sie tym zajme.

Moim problemem teraz jest niemożność podstawienia wartość zmiennej do funkcji, otóż:
document.getElementById('wynik').innerHTML += "<tr><td onclick = on_Click('jakas tam zmienna') onmouseover=\"this.style.background='#87CEFA'\" onmouseout=\"this.style.background=''\">" + rezultat[i] + "</td></tr>";

zdarzenie onclick wywołuje funkcje on_Click i jako pierwszy argument przekazuje tekst: jakas tam zmienna

Ja chciałbym przekazać rezultat[i], ale niewiem jak zapisać, by działało.

0

Może
"<tr><td onclick = on_Click("+rezultat[i]+") onmouseover=\"this.style.background='#87CEFA'\" onmouseout=\"this.style.background=''\">" + rezultat[i] + "</td></tr>"; ?
Albo (rezultat["+i+"])

0

Pierwszy sposób próbowałem już wcześniej, niestety bezskutecznie. Natomiast drugi sposób też nie działa:

document.getElementById('wynik').innerHTML += "<tr><td onclick = \"on_Click(rezultat["+i+"])\" onmouseover=\"this.style.background='#87CEFA'\" onmouseout=\"this.style.background=''\">" + rezultat[i] + "</td></tr>";

EDIT:
Mam pytanie, bo często posty są edytowane przez użytkownika "nav" i pisze na czerwono ort!. Co to oznacza?
//że ktoś robi błędy ortograficzne - n

Rozumiem, ze to sie tyczy też do braku polskich ogonków, bo jako tako błędów typu rz czy z, ó czy u albo ch czy h to nie popełniam.

...a więc jak z tym przekazaniem zmiennej do funkcji?

Zauważyłem ze bez problemu moge przekazać licznik pętli do tamtej funkcji on_Click (" + i + ").
Natomiast samego rekordu tablicy nie.

0

Sprawa jeszcze nie dokońca rozwiązana, owszem udało mi sie pokombinować, ale bez tabeli co nie było funkcjonalne.

Jeszcze raz chciałbym dopytać sie w sprawie metody .append z JQuery.

Otóż kod:

var insert = "<td>Pewne zmienne dane</td>"
$(document).ready(function(){
    $("#tabela").append(insert);
  });}

Działa tylko jeśli jest poza moją petlą while, której używam do wyświetlenia rekordów z tablicy.

Sam kod::
$("#tabela").append(insert);
Nie działa jesli NIE MA swojego document ready function.

Jak napisać kod, który by działał w pętli?

1 użytkowników online, w tym zalogowanych: 0, gości: 1