2013-09-06 15 views
22

Ich habe folgende HTML:Javascript-Einstellung Hintergrundbild eines DIV über eine Funktion und Funktionsparameter

<div id="tab1" style="position:relative; background-image:url(buttons/off.png); 
    <a href="javascript:ChangeBackgroundImageOfTab('tab1', 'on');"> 
     <img id="DivBtn1" name="DivBtn1" src="buttons/text.png" > 
    </a> 
</div> 

und die folgende Javascript:

function ChangeBackgroungImageOfTab(tabName, imagePrefix) 
{ 
    document.getElementById(tabName).style.background-image= 'url("buttons/" + imagePrefix + ".png")'; 
} 

Das Problem entsteht, wenn ich gesetzt versuchen, Das Tabs-Hintergrundbild über einen Aufruf von getElementByID - Ich weiß jetzt, wie man eine dynamische URL erstellt, die den übergebenen Parameter zusammen mit einigen anderen hartcodierten Werten verwendet. In diesem Fall tauschen wir das OFF-Hintergrundbild mit dem ON-Hintergrundbild aus.

Wie kann ich das tun? Gibt es eine Möglichkeit, eine JavaScript-Variable zu verwenden, den vollständigen Pfad zu ihr zuzuweisen und sie dann als Hintergrundbildpfad in den Aufruf zu senden?

Antwort

38
+2

Warum wird '' 'in die Zeichenfolge eingeschlossen? Und ich hatte es bis jetzt nicht gesehen, aber Sie können' -' nicht in einer Eigenschaft oder einem Variablennamen haben (es wird als Operator interpretiert), Verwenden Sie camel-case: 'backgroundColor'. –

+0

Ja, guter Punkt. :) – TyMayn

+0

Erstellen der Zeichenfolge seperatly funktioniert. Putting es inline nicht funktioniert, aber kompiliert und lief fehlerfrei. Danke für die Hilfe! –

8

Von dem, was ich weiß, die richtige Syntax:

function ChangeBackgroungImageOfTab(tabName, imagePrefix) 
{ 
    document.getElementById(tabName).style.backgroundImage = "url('buttons/" + imagePrefix + ".png')"; 
} 

Also im Grunde getElementById(tabName).backgroundImage und spaltete sich die String wie:

"cssInHere('and" + javascriptOutHere + "/cssAgain')"; 
+0

geteilementbyId benötigt nicht #divname nur den Namen der ID ohne # –

Verwandte Themen