У меня есть массив, который обновляется вместе с остальной частью страницы с помощью вызова ajax, который заменяет все содержимое тела моей страницы. Мои теги <script>
находятся внутри тела, и я явно запускаю eval()
для этих тегов сценария (на которые ссылается id).
Теперь, если я сделаю alert(array)
, я получу обновленные значения, но функции в моем Javascript, которые используют содержимое моего массива, никогда не обновляются, он привязывается к старым значениям массива, несмотря на обновление.
Это eval()
, который должен добиться цели ...
eval(document.getElementById('otherScripts').innerHTML);
eval(document.getElementById('transition').innerHTML);
<?php
javascript.="pauseTimes[$i]=$paustime"
?>
В итоге получается что-то вроде этого массива Javascript:
pausTimes[0]=3000
pausTimes[1]=3000
pausTimes[2]=3000
pausTimes[3]=3000
Как я уже сказал, при выполнении alert()
для содержимого этого массива он отображает правильные, обновленные значения, но эта маленькая функция ниже просто не обновляется. Это как если бы он извлек эти значения массива из своего собственного кэша:
function slideshow(slide) {
if (pauseTimes[slide]>0) {
$('#slide'+slide).fadeIn(1500).delay(pauseTimes[slide])**.fadeOut(1500,function(){slideshow(slide+1);});
}
else {
ajaxUpdate();
}
}
Важнейшая часть выше выделена жирным шрифтом, здесь я постоянно получаю старые исходные значения массива из первой синхронной загрузки страницы. После этого, независимо от содержимого массива pauseTimes
, оно остается неизменным.