Javascript 为什么我的程序表现得好像没有';在服务器上找不到映像?
我已经有了一个用javascript加载图像构建元素的库,如下所示:Javascript 为什么我的程序表现得好像没有';在服务器上找不到映像?,javascript,jquery,ajax,algorithm,Javascript,Jquery,Ajax,Algorithm,我已经有了一个用javascript加载图像构建元素的库,如下所示: $(window).load(function() { $("#getElement").click(function() { for (var i = 1; i <= 10; i++) { var ancla = document.createElement("A"); var img = document.createElement("IMG")
$(window).load(function() {
$("#getElement").click(function() {
for (var i = 1; i <= 10; i++) {
var ancla = document.createElement("A");
var img = document.createElement("IMG");
var text = document.createTextNode("");
img.src = 'images/tile' + i + '.jpg';
img.id = "image";
img.appendChild(text);
ancla.href = 'images/tile' + i + '.jpg';
ancla.className = "boxing";
ancla.appendChild(text);
document.getElementById("gallery").appendChild(ancla);
ancla.appendChild(img);
loadimage('images/tile' + i + '.jpg');
}
});
});
在click函数的for语句之后,我输入了条件的代码
if (warning == true) {
$("#gallery").justifiedGallery({
filter: false,
rowHeight: 180
});
} else {
$("#dynamicCont").load('noImage.txt');
}
这就是代码不能正常工作的地方,因为即使函数loadimage()找到图像,它也总是在条件的else中输入。有什么我遗漏的吗?或者其他方法使其正常工作?可能发生的情况是以下代码:
if (warning == true) {
$("#gallery").justifiedGallery({
filter: false,
rowHeight: 180
});
} else {
$("#dynamicCont").load('noImage.txt');
}
在您对服务器的请求完成之前正在运行。请记住,这是一个异步请求
只需将代码移动到回调函数中,如下所示:
function imagexists() {
if (req.readyState == 4) {
if (req.status == 200) {
image.style.display = "block";
image.src = imagepath;
$("#gallery").justifiedGallery({
filter: false,
rowHeight: 180
});
} else {
image.style.display = "none";
$("#dynamicCont").load('noImage.txt');
}
}
}
您实际上不需要这样的警告布尔值。是否将文本附加到img元素?这是错误的。您不能向img元素添加任何子元素“如果至少找到一个图像,则变量为布尔值且变为true;如果未找到图像,则变为false”。在这种情况下,您得到了
warning=true
和warning=false
的反转。我尝试了您所说的内容,效果很好,只是现在我不知道为什么用$(当库中没有图像时,不会调用“#dynamicCount”).load('noImage.txt')。很难说。如果使用调试器进入代码,您是否看到它进入$(“#dynamicCount”).load('noImage.txt');
行?现在运行正常,进入$(“#dynamicCount.load('noImage.txt'))的条件;行是一个空请求,它意味着一个req.status=404Ok很好。我以为else
会捕获404或任何其他响应代码,但只要它工作:)
function imagexists() {
if (req.readyState == 4) {
if (req.status == 200) {
image.style.display = "block";
image.src = imagepath;
$("#gallery").justifiedGallery({
filter: false,
rowHeight: 180
});
} else {
image.style.display = "none";
$("#dynamicCont").load('noImage.txt');
}
}
}