나는 github을 시험해보고 거기에 작은 테스트 프로젝트를 넣을 것이다. 내가 JSHint을 통해 내가 도망 공개하지만 난 내가 흔들 수없는 오류가 발생하기 때문에 :함수에 대한 Javascript JQuery 모범 사례
$(function() {
var allImagesLoaded = false, imagesLength = 0, counter = 0, imageArray = [], loadedImages = [], loadedImagesCounter = 0;
/*--------------------------------
Add your images to the array
and your good to go
--------------------------------*/
imageArray = ["img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg"];
imagesLength = imageArray.length;
if(imagesLength === 0) {
$('#container').html('<p><strong>You need to put some images in your array</strong></p>');
}
else {
preloadImages();
}
function preloadImages() {
var tempImage = $("<img />").attr("src", imageArray[loadedImagesCounter]);
tempImage.load(function(){
loadedImages.push(this);
loadedImagesCounter++;
if(loadedImagesCounter == imagesLength) {
imageArray = loadedImages;
initEverything();
}
else {
if(!allImagesLoaded)
{
preloadImages();
}
}
});
}
function initEverything() {
allImagesLoaded = true;
$('#preloadingImages').hide();
// Deactivate the context menu that appears on right click
$(document).bind("contextmenu", function(e) {
return false;
});
var theSource = $(imageArray[0]).attr('src');
var theImage = $('<img />');
$(theImage)
.attr('src', theSource)
.attr('width', imageArray[0].width)
.attr('height', imageArray[0].height)
.attr('alt', 'demobild 1')
.attr('id', 'pageImage');
$('#container').append(theImage)
$("#pageImage").mousedown(function(e) {
if (allImagesLoaded) {
switch (e.which) {
case 1:
stepForward();
break;
case 2:
// center button on the mouse
break;
case 3:
stepBackward();
break;
default:
// Nada
}
}
});
$(document).keydown(function(e) {
e.preventDefault();
if (allImagesLoaded) {
switch (e.keyCode) {
case 37: // Left
stepBackward();
break;
case 38: // Up
stepBackward();
break;
case 39: // Right
stepForward();
break;
case 40: // Down
stepForward();
break;
default:
// Nada
}
}
});
}
function stepForward() {
if (counter === imagesLength-1) {
counter = 0;
} else {
counter++;
}
$("#pageImage").attr("src", $(loadedImages[counter]).attr('src'));
$("#pageImage").attr("alt", "demobild " + counter);
}
function stepBackward() {
if (counter === 0) {
counter = imagesLength-1;
} else {
counter--;
}
var sourcePath = $(imageArray[counter]).attr('src');
$("#pageImage").attr("src", sourcePath);
$("#pageImage").attr("alt", "demobild " + counter);
}
});
기능을 넣어하는 가장 좋은 방법은 다음과 같습니다
Line 21 preloadImages();
'preloadImages' is not defined.
이 코드는? 맨위로?
다음은 범위의 시작 부분에 함수 선언 리프트 자바 스크립트 내 프로젝트 https://github.com/Benjaminsson/Image-expo
this.preloadImages 읽기; ? –
@Daniel : 아니요. 규칙적인 기능입니다. – ThiefMaster