• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage JavaScript blockiert ein anderes JavaScript auf meiner Website?

HTML & Co.

Mitglied
Hallo,

auf einer Seite verwende ich folgendes JavaScript für eine Textanimation:

Code:
<h2>

<script language="JavaScript1.2" type="text/javascript">

//<![CDATA[




/*

Neon Lights Text

By JavaScript Kit (<a href="http://javascriptkit.com">http://javascriptkit.com</a>)

Over 400+ free scripts here!

*/




var message="Aktuell"

var neonbasecolor="gray"

var neontextcolor="yellow"

var flashspeed=100 //in milliseconds




///No need to edit below this line/////




var y=0

if (document.all||document.getElementById){

document.write('')

for (w=0;w<message.length;w++)

document.write('<span id="neonlight'+w+'">'+message.charAt(w)+'<\/span>')

document.write('')

}

else

document.write(message)




function crossref(number){

var crossobj=document.all? eval("document.all.neonlight"+number) : document.getElementById("neonlight"+number)

return crossobj

}




function neon(){




//Change all letters to base color

if (y==0){

for (w=0;w<message.length;w++)

//eval("document.all.neonlight"+w).style.color=neonbasecolor

crossref(w).style.color=neonbasecolor

}




//cycle through and change individual letters to neon color

crossref(y).style.color=neontextcolor




if (y<message.length-1)

y++

else{

y=0

clearInterval(flashing)

setTimeout("beginneon()",100)

return

}

}




function beginneon(){

if (document.all||document.getElementById)

flashing=setInterval("neon()",flashspeed)

}

beginneon()







//]]>

</script>

</h2>

Im Header-Bereich habe ich folgendes JavaScript eingebaut, um den Text in der Titel- und Tableiste zu animieren: http://deine-slideshow.jimdo.com/lauftext/

Code:
<script language="JavaScript1.2" type="text/javascript">

//<![CDATA[

var message="MEINE WEBSITE – WILLKOMMEN!"

var message=message+""

i="0"

var temptitle=""

var geschw="150"




function titler(){

if (!document.all&&!document.getElementById)

return

document.title=temptitle+message.charAt(i)

temptitle=temptitle+message.charAt(i)

i++

if(i==message.length)

{

i="0"

temptitle=""

}

setTimeout("titler()",geschw)

}




window.onload=titler

//]]>

</script>
Ich vermute jetzt, dass das erste JavaScript (ganz oben) das untere JavaScript blockiert, da der zu animierende Text im oberen JavaScript:

var message ="Aktuell"
nun in der Titelleiste scrollt, anstelle des Textes aus dem zweiten JavaScript, der eigentlich in der Titelleiste animiert werden soll:

var message="MEINE WEBSITE – WILLKOMMEN!"
Was habe ich falsch gemacht?

Habe ich Variablen vertauscht?

Danke im Voraus!

PS: Ich verwende Jimdo.
 
Werbung:
Der Fehler liegt offenbar nicht bei dir, sondern daran, dass diese Skripts globale Variablen verwenden, die sich überschneiden, wie Du schon richtig erkannt hast. Will man die Skripts nicht vollständig umschreiben, kann man den Fehler beheben, indem man den Variablennamen "message" in einem Skript umbenennt. (Hoffentlich ist das die einzige Variable, auf die das zutrifft.)
 
Okay. Wenn das nicht allzu viel Arbeit ist, könntest Du mir bitte ein Beispiel zeigen oder ein kleines Script hier veröffentlichen, das den Variablennamen "message" umbenennt?

Dann müsste das Skript doch rein lokal arbeiten, richtig?

Danke Dir!
 
Werbung:
Na gut, ersetze das erste Skript für die Textanimation durch dieses:
Code:
<h2>
<script type="text/javascript">
//<![CDATA[
/*
Neon Lights Text
By JavaScript Kit (<a href="http://javascriptkit.com">http://javascriptkit.com</a>)
Over 400+ free scripts here!
*/
var messg="Aktuell"
var neonbasecolor="gray"
var neontextcolor="yellow"
var flashspeed=100 //in milliseconds
///No need to edit below this line/////
var y=0
if (document.all||document.getElementById){
document.write('')
for (w=0;w<messg.length;w++)
document.write('<span id="neonlight'+w+'">'+messg.charAt(w)+'<\/span>')
document.write('')
}
else
document.write(messg)
function crossref(number){
var crossobj=document.all? eval("document.all.neonlight"+number) : document.getElementById("neonlight"+number)
return crossobj
}
function neon(){
//Change all letters to base color
if (y==0){
for (w=0;w<messg.length;w++)
//eval("document.all.neonlight"+w).style.color=neonbasecolor
crossref(w).style.color=neonbasecolor
}
//cycle through and change individual letters to neon color
crossref(y).style.color=neontextcolor
if (y<messg.length-1)
y++
else{
y=0
clearInterval(flashing)
setTimeout("beginneon()",100)
return
}
}
function beginneon(){
if (document.all||document.getElementById)
flashing=setInterval("neon()",flashspeed)
}
beginneon()
//]]>
</script>
</h2>
 
Perfekt!

Es funktioniert! Hast Du also einfach nur "message" durch "messg" ersetzt oder sonst noch etwas verändert?
Ich danke Dir!

Hätte man denn nicht theoretisch auch den anderen Code im Head-Bereich verändern können, um das Problem zu beheben oder geht das nicht?
 
Code:
Hast Du also einfach nur "message" durch "messg" ersetzt
Ja, genau das und nur das. Man hätte die selbe Änderung auch im anderen Skript machen können. Der Variablenname muss nur in beiden Skripts unterschiedlich sein.
 
Werbung:
Tut mir leid, dass ich noch mal nerve, aber ich habe das gleiche Problem auch mit diesem Skript:

<script language="JavaScript1.2" type="text/javascript">

//<![CDATA[

<!--



var line=new Array()

line[1]="Dein cooler Newsticker für aktuelle Ansagen und Informationen"

line[2]="Informiere deine Besucher sofort über Neuigkeiten auf deiner Seite"

line[3]="..ganz einfach und unkompliziert ohne großen Aufwand"

line[4]="mit deinem neuen Newsticker!"



var ts_fontsize="15px"



var longestmessage=1

for (i=2;i<line.length;i++){

if (line.length>line[longestmessage].length)

longestmessage=i

}



var tscroller_width=line[longestmessage].length



lines=line.length-1 //--Number of lines



if (document.all||document.getElementById){

document.write('<form name="bannerform">')

document.write('<input type="text" name="banner" size="'+tscroller_width+'"')

document.write(' style="background-color: transparent; '+document.bgColor+'; color: '+document.body.text+'; font-family: arial; font-size: '+ts_fontsize+'; font-weight:bold; border: medium none" onfocus="blur()">')

document.write('<\/form>')

}



temp=""

nextchar=-1;

nextline=1;

cursor="\\"

function animate(){

if (temp==line[nextline] & temp.length==line[nextline].length & nextline!=lines){

nextline++;

nextchar=-1;

document.bannerform.banner.value=temp;

temp="";

setTimeout("nextstep()",3000)}

else if (nextline==lines & temp==line[nextline] & temp.length==line[nextline].length){

nextline=1;

nextchar=-1;

document.bannerform.banner.value=temp;

temp="";

setTimeout("nextstep()",3000)}

else{

nextstep()}}



function nextstep(){



if (cursor=="\\"){

cursor="|"}

else if (cursor=="|"){

cursor="/"}

else if (cursor=="/"){

cursor="-"}

else if (cursor=="-"){

cursor="\\"}



nextchar++;

temp+=line[nextline].charAt(nextchar);

document.bannerform.banner.value=temp+cursor

setTimeout("animate()",35)}



//if IE 4+ or NS6

if (document.all||document.getElementById)

window.onload=animate

// -->

//]]>

</script>

Quelle: http://deine-slideshow.jimdo.com/newsticker/

Das war es erst einmal!

Ich habe bereits versucht, "message" durch "msgge" zu ersetzen, aber leider funktioniert der Laufticker gar nicht :(.

Hast Du noch eine Idee auf Lager?

Danke für Deine Mühe!
 
In dem dritten Skript überschneidet sich jetzt die Variable i. Ändere mal dieses:
Code:
for (i=2;i<line.length;i++){

if (line.length>line[longestmessage].length)

longestmessage=i

}
in dieses:
Code:
for (iticker=2;iticker<line.length;iticker++){

if (line.length>line[longestmessage].length)

longestmessage=iticker;

}
Diese Skripts sind nicht gerade vorbildlich, aber ich möchte sie jetzt nicht vollkommen umschreiben. Bei document.write bin ich mir nicht sicher, wie es sich verhält, wenn man den Code in einer Funktion kapselt.
 
Perfekt! Es läuft alles!

Ich hatte noch weitere Variablen übersehen, die sich mit anderen Skripten überschneiden und deren Variablen verändert. Jetzt läuft alles fehlerfrei.

Ich danke Dir!
 
Werbung:
Zurück
Oben