Den här koden uppdateras via ajax, och min array pauseTimes får nya värden. Mitt problem är att om jag kör en alert så skriver den ut korrekta värden, men när jag kör funktioner som använder värdena i min array så är det som om de värden som initialt lagrades i arrayen är de enda som används av koden, jag får inte ihop det.javascript eval() funkar inte här?
Det jag gör efter att jag uppdaterar javascriptet (genom ajax som ersätter allt inom body-taggarna) så har jag angivit ett id på de båda script-taggarna och kör
eval(document.getElementById('otherScripts').innerHTML);
eval(document.getElementById('transition').innerHTML);
för att javascriptkoden skall köras också.
Några förslag?...
<script id='transition' type='text/javascript' src='userData/2/style/transition.js'></script>
<script id='otherScripts' type='text/javascript'>
var pauseTimes = new Array();
setPauseTimes();
function setPauseTimes() {
pauseTimes[0]=2000;
pauseTimes[1]=2000;
pauseTimes[2]=2000;
pauseTimes[3]=2000;
}
function ajaxUpdate()
{
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
/* Försök hämta hela bildspelet på nytt */
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
/* Ladda in bildspelet på nytt */
document.getElementById('slideshow_body').innerHTML=xmlhttp.responseText;
/* Uppdatera paustiderna */
eval(document.getElementById('otherScripts').innerHTML);
eval(document.getElementById('transition').innerHTML);
}
/* Om hämtningen misslyckades... */
else if (xmlhttp.readyState==4 && xmlhttp.status!=200)
{
/* Visa avbrottsmeddelandet */
document.getElementById('avbrott').style.display='inline';
/* Starta om bildspelet från utgångsläget (det som redan finns inläst) */
slideshow(0);
}
}
xmlhttp.open('GET','index.php?controller=slideshow&asynch=true',true);
xmlhttp.send();
}
function buttons(id) {
$('#button'+id).removeClass('future').addClass('past');
}
function buttons_reset() {
/* Ställa om alla buttons till future (icke ifyllda) */
$('#buttons').find('div').each(function(i){
$('#button'+i).removeClass('past').addClass('future');
});
}
$(document).ready(function(){
slideshow(0);
});
</script>
Transition.js ser ut såhär:
/* En mjuk tonande övergång mellan varje sida */
function slideshow(slide) {
/* Initiera slideshow */
if (slide==0) {
buttons_reset();
/*
$('#wrapper').find('div').each(function(i){
$('#slide'+i).fadeOut(0);
});
*/
}
if (pauseTimes[slide]>0) {
buttons(slide);
$('#slide'+slide).fadeIn(1500).delay(pauseTimes[slide]).fadeOut(1500,function(){slideshow(slide+1);});
}
else {
ajaxUpdate();
}
}