我不知道为什么会发生这种情况,这可能只是一个基本错误,但我的body
能够调用函数,因为:
Uncaught ReferenceError: changeImg is not defined
这是我的相关PHP / HTML:
<?php print("<body onLoad='javascript:changeImg(year_" . $p_date[0] . ")'>"); ?>
我的JavaScript功能:
var currentImg = 0;
var totalImg = 0;
var stored_year = 0;
$("#next-button").click(function() {
if (currentImg == totalImg) {
currentImg = 0;
}
else {
currentImg++;
}
changeImg();
});
$("#previous-button").click(function() {
if (currentImg == 0) {
currentImg = totalImg;
}
else {
currentImg--;
}
changeImg();
});
function changeImg(galleryYear) {
if (galleryYear = stored_year) {
$("#gallery-image").html("<img src='" + galleryYear.x_src[currentImg] + "'>");
$("#gallery-title").html(galleryYear.x_title[currentImg]);
$("#gallery-medium").html(galleryYear.x_medium[currentImg]);
$("#gallery-size").html(galleryYear.x_size[currentImg]);
$("#gallery-date").html(galleryYear.x_date[currentImg]);
var userCurrent = currentImg + 1;
var userTotal = galleryYear.x_id.length;
$("#current-post").html(userCurrent);
$("#post-total").html(userTotal);
var galWidth = $("#gallery-image" > "img").width();
$("#gallery").width(galWidth);
}
else {
currentImg = 0;
$("#gallery-image").html("<img src='" + galleryYear.x_src[currentImg] + "'>");
$("#gallery-title").html(galleryYear.x_title[currentImg]);
$("#gallery-medium").html(galleryYear.x_medium[currentImg]);
$("#gallery-size").html(galleryYear.x_size[currentImg]);
$("#gallery-date").html(galleryYear.x_date[currentImg]);
var userCurrent = currentImg + 1;
var userTotal = galleryYear.x_id.length;
$("#current-post").html(userCurrent);
$("#post-total").html(userTotal);
var galWidth = $("#gallery-image" > "img").width();
$("#gallery").width(galWidth);
$("#gallery-type").html('<img id="gallery-switch" alt="" src="images/gallery-icon.png" onClick="gallerySwitch()">');
stored_year = galleryYear;
}
}
它工作得早,但为什么不呢?
答案 0 :(得分:0)
当它表示函数未定义时,这通常意味着,必须在调用函数的代码之前调用声明函数的javascript。
在你的例子中(如果粘贴整个代码会更好)我想你应该把JS代码放在<head>
标签中,这样可以解决你的问题。
另一个选择是使用document.ready事件或document.load事件,但不是直接绑定在标记中,而是绑定在主体的末尾。
答案 1 :(得分:0)
我认为在您的代码中,year_" . $p_date[0] . "
是什么。
这可能是一个值。但是你已将此作为变量传递。
或者可能以某种方式 changeImg 未加载或在 changeImg 声明之前出现错误。
有时如果JavaScript中存在某些错误或异常,则显示未定义的函数。
答案 2 :(得分:0)
问题似乎与功能的主体有关。检查小提琴。 http://jsfiddle.net/rajanrawat/3pCvX/
var currentImg = 0;
var totalImg = 0;
var stored_year = 0;
$("#next-button").click(function() {
if (currentImg == totalImg) {
currentImg = 0;
}
else {
currentImg++;
}
changeImg();
});
$("#previous-button").click(function() {
if (currentImg == 0) {
currentImg = totalImg;
}
else {
currentImg--;
}
changeImg();
});
function changeImg(galleryYear) {
alert('in here');
}
它获得了这个功能。也许你没有在ondom ready或者
中绑定它$(document).ready()