Autor Zpráva
kohl
Profil
Dobrý den, dělám našeptávač. Vše funguje, až na to, že když najedu na položku tak se přidá jen prázdný class.

function suggest() {

    var value = document.getElementById('search_text').value;
    var number_letter = value.replace(/^\s+|\s+$/g, "").length;
    element = document.getElementById('suggest');

    if (number_letter > 0 && number_letter < 60) {

        var code = window.event.charCode || window.event.keyCode;

        if (code <= 40 && code >= 37 && element !== "") {
            keyboard_select(search_word, code, element);
        } else {
            ajax("./common/suggest.php?q=" + encodeURIComponent(value),
                    function(data) {
                        var data = eval('(' + data.responseText + ')');
                        element.innerHTML = "";
                        if (data.length > 0) {

                            var ul = document.createElement('ul');
                            for (var i = 0; i < data.length; i++) {
                                li = document.createElement('li');
                                li.innerHTML = data[i];
//tato funkce mi funguje jak ma
                                li.onclick = function() {
                                    document.getElementById('search_text').value = this.innerHTML;
                                    this.form.submit();
                                    return false;
                                };
//tato funkce mi nefunguje
                                li.onmouseover = function() {
                                    this.className = 'suggest_hover';                                   
                                    return false;
                                };
//tato funkce mi nefunguje
                                li.onmouseout = function() {
                                    this.className = "";
                                    return false;
                                };
                                ul.appendChild(li);
                            }
                            element.appendChild(ul);
                        }
                    });
            search_word = value;
            select_current = 0;
        }
    } else {
        element.innerHTML = "";
    }

}

Děkuji za odpověď.
Camo
Profil
Pred to li na začiatku cyklu by malo ísť var. Ale či je to v tom neviem, lebo mi to v princípe funguje aj bez toho...
Urobil som z toho toho a funguje to úplne v pohode. Takže chyba bude asi niekde mimo túto časť.
<!DOCTYPE HTML public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>
.green{color:green}
.red{color:red}
</style>
</head>

<h1>toto je DROM.php</h1>
<a href="" onclick="on('data'); return false;">fc on</a>
<div id="d1"></div>
<script type="text/javascript">
function on(data) {
                           element=document.getElementById('d1');
                           element.innerHTML = "";
                           if (data.length > 0) {

                            var ul = document.createElement('ul');
                            for (var i = 0; i < data.length; i++) {
                                li = document.createElement('li');
                                li.innerHTML = data[i];
//tato funkce mi funguje jak ma
                                li.onclick = function() {
                                    alert("ok");
                                    return false;
                                };
//tato funkce mi nefunguje
                                li.onmouseover = function() {
                                    this.className = 'green';
                                    return false;
                                };
//tato funkce mi nefunguje
                                li.onmouseout = function() {
                                    this.className = "red";
                                    return false;
                                };
                                ul.appendChild(li);
                            }
                            element.appendChild(ul);
                        }
                    }

</script>
</body>
</html>
Chamurappi
Profil
Reaguji na kohla:
Událost onmouseout se vyvolává, i pokud přejedeš na potomka <li>. Z jakého důvodu nemůžeš/nechceš místo skriptu použít pseudotřídu :hover?

var code = window.event.charCode || window.event.keyCode;
Tohle ti nepoběží ve všech prohlížečích.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: