2016-03-03 5 views
0

JavaScript Noob здесь.Динамическое изменение изображения в javascript

Я хочу показать динамически изменяющийся эффект изображения, как это: http://dotsignals.org/google_popup.php?cid=202 (если эта веб-страница не может показать изменения изображений, нажмите на любой камере на http://dotsignals.org)

Я изучил код, и есть некоторые вопросы:

1. На сайте используются setImage и refreshSetImage для инициализации и обновления изображения для динамически изменяющегося эффекта. Что здесь используется в Math.random? Я понимаю, что это способ дифференцировать изображения с разного времени на одной и той же кулачке. Но как это работает? Как ответит бэкэнд?

2.Удалите первый вопрос. Каков механизм refreshSetImage? Я не видел никаких признаков запроса данных с сервера. Отправляет ли он «ПОЛУЧИТЬ»? Как обновить изображение?

function setImage(imageID){ 
    var currentImage = imageID; 
    document.getElementById(currentImage).src ='http://207.251.86.238/cctv9.jpg'+'?math='; 

    refreshSetImage(); 
} 
function refreshSetImage() { 

    document.images["myCam"].src = 'http://207.251.86.238/cctv9.jpg'+'?math='+Math.random(); 
    setTimeout('refreshSetImage()',1000); 
} 
function ScaleSize(imageID) { 
    var elem = document.getElementById(imageID); 
    elem.style.width = 500; 
    elem.style.height = 300; 
} 

3. Как работает бэкэнд? 4. Теперь я хочу использовать эти две функции в своем собственном проекте. Я хочу добавить параметр camID в функции setImage и refreshSetImage, поэтому изображение src изменится примерно на: 'http://..../'+camID+'.jpg'+'?math'. camID - это строка, которая идентифицирует разные камеры. Я изменил его на:

function refreshSetImage(camID) { 

    document.images["myCam"].src = 'http://207.251.86.238/'+camID+'.jpg'+'?math='+Math.random(); 
    setTimeout('refreshSetImage(camID)',1000); 
} 

function setImage(imageID,camID){ 
    var currentImage = imageID; 
    document.getElementById(currentImage).src = 'http://207.251.86.238/'+camID+'.jpg'+'?math='; 

    refreshSetImage(camID); 
} 

и получил ошибку: Uncaught ReferenceError: camID is not defined VM132:1. Изображение тоже не меняется. Я не знаю, в чем проблема. Что такое VM132:1?

Благодаря

+2

math.random является убедитесь, что изображение вы запрашиваете не из кэша. Вы добавляете «уникальный» ключ, чтобы убедиться, что браузер действительно пытается получить новое изображение. Как сконфигурирован бэкэнд: хороший вопрос ... спросите у оригинальных разработчиков .. Если вы хотите сделать свой собственный бэкэнд .. также спросите их: возможно, они ограничили доступ к своей петле видео, и это * могло бы быть почему вы получаете сообщение об ошибке (но это всего лишь догадка ( – Leon

+0

http://207.251.86.238/cctv9.jpg?time=1 http://207.251.86.238/cctv9.jpg?time=2 время или математика params, если reload image .. и в вашей проблеме, camID не определен, это ошибка, когда вы не назначаете значение в своей переменной – Cuchu

+0

Я заставлял его работать, периодически запрашивая данные с задней части с помощью JQuery get() – Keying

ответ

-1

проверка

function refreshSetImage(imageID,camID) { 
    currentImage = imageID; 
    url = 'http://207.251.86.238/'+camID+'.jpg'+'?math='+Math.random(); 
    //document.getElementById(currentImage).src= url; 
    console.log(url); 
} 

$(document).ready(function(){ 

imageID = "imageID"; 
camID = "camID"; 

setInterval(function() { 
    refreshSetImage("imageID","camID"); 
}, 3000); 


}); 

https://jsfiddle.net/Cuchu/vr1ftwg1/

+0

Все, что вы сделали, это скопировать оригинал код затем примените 'setInterval' вместо' setTimeout'. Это ничего не изменит. –

+0

setInterval ('refreshSetImage (' + camID + ')', 1000); add ('+ camID +') – Cuchu

+0

Это все еще неправильно. [ Они потеряют (https://jsfiddle.net/91cy1puf/). Ваш последний вариант почти прав. Если они использовали 'setInterval', используя ссылку на функцию, а не строку, это сработало бы. Плохая идея использовать строки с 'setInterval' и' setTimeout' в любом случае. Нет причин не просто использовать обычную старую функцию. –

Смежные вопросы