Forum: PC-Programmierung Html Javascript, Funktionsaufruf in Datei funktioniert nicht.


von emi (Gast)


Lesenswert?

Ich habe eine Datei angelegt:
1
    function clear_searchValue(){
2
        document.getElementById("text_suchleiste").value = "";
3
    }
4
    function set_searchValue(){
5
        document.getElementById("text_suchleiste").value = "Suche...";
6
    }
7
8
    function set_klasse(var klassen_name, var objekt_id){
9
        alert("Klassenname = " );
10
        document.getElementById(objekt_id).className = klassen_name;
11
    }

und ich rufe diese Funktionen von einer FOrm aus auf:
1
<form>
2
                <input class="text_klasseNichtAngeklickt" id="text_suchleiste"
3
                onclick="
4
                            set_klasse('text_klasseAngeklickt', 'text_suchleiste');
5
                            clear_searchValue();"
6
7
                onblur="    set_klasse('text_klasseNichtAngeklickt', 'text_suchleiste');
8
                            set_searchValue(); "
9
10
                type="text" name="nm_suche" size="35" maxlength="35" value="Suche..."/>
11
            </form>

weiters sind:
1
#text_suchleiste{
2
    height: 25px;
3
}
4
5
#text_suchleiste:hover{
6
    box-shadow: 0px 0px 5px white;
7
}
8
9
.text_klasseNichtAngeklickt{
10
    color: #BFBFBF;
11
    box-shadow: 0px 0px 0px white;
12
    border: solid 1px;
13
    border-color: #ffffff;
14
}
15
16
.text_klasseAngeklickt{
17
    box-shadow: 0px 0px 5px white;
18
    color: #3F3C3C;
19
}

leider wird keiner dieser Javazeilen richtig ausgeführt. Ich habe das 
FIle natürlich richtig angehängt in das html Dokument mit:
1
<script language="javascript" type="text/javascript" src="javascript_suchleiste.js">

jedoch funktioniert es NUR wenn ich die Befehle von hand in das 
onClickEvent eingebe.

Hat wer eine Idee wieso die Funktionen im .js File nicht aufgerufen 
werden? Gestern hats noch funktioniert mit etwas abgeänderten 
Funktionen. Aber jetzt wo ich Parameter in den FUnktionen eingebaut hab 
geht gar nichts mehr.

von Jan H. (j_hansen)


Lesenswert?

emi schrieb:
>
1
>     function set_klasse(var klassen_name, var objekt_id){
2
>         alert("Klassenname = " );
3
>         document.getElementById(objekt_id).className = klassen_name;
4
>     }
5
>

Die "var"s gehören weg bei Funktionsparametern. Das ist der erste 
Fehler, weiter habe ich den Code nicht überprüft.
Ev. man in die Debuggingtools  Konsole  ... schauen, der Browser hat 
sich wahrscheinlich eh darüber beschwert.

-->
1
function set_klasse(klassen_name, objekt_id){
2
    alert("Klassenname = " );
3
    document.getElementById(objekt_id).className = klassen_name;
4
}

von Εrnst B. (ernst)


Lesenswert?

Wenn Kompatibilität(*) mit prähistorischen Uralt-Browsern nicht soo 
wichtig ist:

<input type="text" placeholder="Suche..." ...

ganz ohne Javascript.


*) Es funktioniert dort trotzdem, der Effekt fehlt halt.

von emi (Gast)


Lesenswert?

Danke, funktioniert soweit!! Ach ja, ne Frage so nebenbei: Wenn meine 
Seite sehr sehr viele Seiten hat immer mit dem selben menü usw..
gibt es da einen ausweg, dass wenn ich eine einzige Seite vom Menü her 
ändere dass es bei allen anderen übernommen wird? Oder sollte ich lieber 
alles auf einer Seite zuerst machen und wenn ich mir dann hunder 
prozentig sicher bin das menü kopieren?

von TestX .. (xaos)


Lesenswert?

emi schrieb:
> Danke, funktioniert soweit!! Ach ja, ne Frage so nebenbei: Wenn meine
> Seite sehr sehr viele Seiten hat immer mit dem selben menü usw..
> gibt es da einen ausweg, dass wenn ich eine einzige Seite vom Menü her
> ändere dass es bei allen anderen übernommen wird? Oder sollte ich lieber
> alles auf einer Seite zuerst machen und wenn ich mir dann hunder
> prozentig sicher bin das menü kopieren?

sowas löst man in zB PHP oder RubyonRails... das menü wird 1mal 
definiert.
was du hier machen willst ist wie das javascript oben Steinzeit ;)

schau dir doch mal ein CMS wie zB WordPress an ;) Für Javascript benutzt 
man übrigens heutzutage Frameworks wie jQuery, MooTools zusammen mit 
TypeScript oder CoffeeScript

von Nik D. (y2kicn)


Lesenswert?

Hi emi

Das Problem mit dem content, der sich auf allen Seiten ändern soll 
könntest du folgendermassen lösen:

Entweder durch serverseitiges Scripting (Node.js, Php usw), welches dir 
deine HTML Seite aus einem Template zusammenbaut

Oder aber, du baust dir die View erst im Client zusammen, 
vorteilhafterweise mit Javascript.

Dies könnte dann zB folgendermassen aussehen:

Auf dem Server hast du ganz ein html File mit einer Art Grundstruktur, 
ganz einfach gesagt zum Beispiel:
1
<html>
2
<head>
3
<script src="deinJavascript.js"></script>
4
</head>
5
<body>
6
<div id="menu"></div>
7
<div id="inhalt"></div>
8
</body>
9
</html>


deinJavascript.js wartet dann mit einem eventhandler darauf bis die DOM 
geladen ist, und laedt danach das HTML des Menu und dasjenige der 
Einstiegsseite nach.
Zudem bräuchtest du in diesem Falle dann auf jedem Menüpunkt noch
einen ClickListener, welcher bei einem Klick das HTML fuer die 
entsprechende Seite abholt.

Das Menü und die einzelnen Seiten wuerden hierbei jeweils nur den Teil 
beinhalten, der im div mit id=menu oder div mit id=inhalt steht.

Zum Anfang lohnt es sich u.U. sowas fürs Verständnis noch in reinem 
Javascript zu schreiben, aber es gibt durchaus Libraries, welche einem 
viel Arbeit abnehmen können was dieses spezifische Problem angeht 
(www.jquery.com, www.angularjs.org)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.