Ich habe zwei Funktionen, die ich auf window.onload-Ereignis ausführen möchte, aber nur die letzte Funktion scheint so weit zu funktionieren. Eine Funktion ist für einen Bildschieberegler und die andere Funktion ruft Daten aus einer Google-Tabellenkalkulationszelle ab.Kombinieren von zwei Javascript-Funktionen zu einem window.onload funktioniert nicht
function fun1() { //image slider
var ul;
var li_items;
var imageNumber;
var imageWidth;
var prev, next;
var currentPostion = 0;
var currentImage = 0;
function init() {
ul = document.getElementById('image_slider');
li_items = ul.children;
imageNumber = li_items.length;
imageWidth = li_items[0].children[0].clientWidth;
ul.style.width = parseInt(imageWidth * imageNumber) + 'px';
prev = document.getElementById("prev");
next = document.getElementById("next");
prev.onclick = function() {
onClickPrev();
};
next.onclick = function() {
onClickNext();
};
}
function animate(opts) {
var start = new Date;
var id = setInterval(function() {
var timePassed = new Date - start;
var progress = timePassed/opts.duration;
if (progress > 1) {
progress = 1;
}
var delta = opts.delta(progress);
opts.step(delta);
if (progress == 1) {
clearInterval(id);
opts.callback();
}
}, opts.delay || 17);
}
function slideTo(imageToGo) {
var direction;
var numOfImageToGo = Math.abs(imageToGo - currentImage);
direction = currentImage > imageToGo ? 1 : -1;
currentPostion = -1 * currentImage * imageWidth;
var opts = {
duration: 1000,
delta: function(p) {
return p;
},
step: function(delta) {
ul.style.left = parseInt(currentPostion + direction * delta * imageWidth * numOfImageToGo) + 'px';
},
callback: function() {
currentImage = imageToGo;
}
};
animate(opts);
}
function onClickPrev() {
if (currentImage == 0) {
slideTo(imageNumber - 1);
} else {
slideTo(currentImage - 1);
}
}
function onClickNext() {
if (currentImage == imageNumber - 1) {
slideTo(0);
} else {
slideTo(currentImage + 1);
}
}
}
function fun2() {
// Google spreadsheet js
google.load('visualization', '1', {
callback: function() {
var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1sA7M5kG6Xo8YScD1Df38PIA_G0bvhGRdqoExXg0KJTs/gviz/tq?tqx=out:html&tq?gid=0&headers=0&range=A1:C');
query.send(displayData);
}
});
function displayData(response) {
numRows = response.getDataTable().getValue(0, 0);
document.getElementById('data').innerHTML = numRows;
}
}
var addFunctionOnWindowLoad = function(callback) {
if (window.addEventListener) {
window.addEventListener('load', callback, false);
} else {
window.attachEvent('onload', callback);
}
}
addFunctionOnWindowLoad(fun1);
addFunctionOnWindowLoad(fun2);
Dies ist die Antwort, die ich link habe versucht, aber ich kann nicht scheinen, um herauszufinden, wo ich falsch gehe.
Ich habe es Ihnen, dass, wenn jede der Funktionen waren einfache 1-Liner, das heißt alert („func1“) und alert („func2“), dass Sie zwei Warnungen angezeigt bekommen würde. Dass der Code fehlschlägt, sagt mir, dass es ein Problem mit einer der Funktionen gibt. Was muss die Konsole sagen? Das Problem wird mit ziemlicher Sicherheit von da aus nach meiner Erfahrung leicht zu erkennen sein. – enhzflep
Hallo, die Konsole zeigt keine Fehler – manicdav
Johnyy2 - Ich habe gerade Code in jeder Funktion als erste Zeile gelöscht. Ich habe den Code 'alert ('fun1');' für einen von ihnen und 'alert (' fun2 ') 'für den anderen benutzt. Beide Warnungen wurden angezeigt. Ich habe dann eine Fehlermeldung erhalten, die besagt: "blank.html: 180 Uncaught ReferenceError: google ist nicht definiert" - das war zu erwarten, da ich gerade den Code benutzt habe, den du gezeigt hast. Aus diesem Grund ist es fair zu sagen, dass es ein Problem in Ihrer Fun1-Funktion gibt. :) – enhzflep