Javascript 为什么这个代码添加了空的img标签?
此代码允许用户输入搜索词,然后显示Flickr中具有该标记的一系列图像。这是预期的工作,但我不明白为什么会产生这么多的img标签Javascript 为什么这个代码添加了空的img标签?,javascript,jquery,html,Javascript,Jquery,Html,此代码允许用户输入搜索词,然后显示Flickr中具有该标记的一系列图像。这是预期的工作,但我不明白为什么会产生这么多的img标签 var main = function () { "use strict"; var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=catss&lang=en-us&format=json&jsoncallback=?"; va
var main = function () {
"use strict";
var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=catss&lang=en-us&format=json&jsoncallback=?";
var $searchInput = $("<input>");
$("header").append($searchInput);
$.getJSON(url, function (flickrResponse) {
flickrResponse.items.forEach(function (photo) {
var $img = $("<img>").hide();
$img.attr("src", photo.media.m);
$searchInput.on("keypress", function (event) {
if (event.keyCode === 13) {
$img.remove();
$img.removeAttr('src');
var $tag = photo.tags.split(" ");
$tag.forEach(function (tag) {
if (tag === $searchInput.val()) {
$img.attr("src", photo.media.m);
}
});
$("main .photos").append($img);
$img.fadeIn();
}
});
$("main .photos").append($img);
$img.fadeIn();
});
}).fail(function (jqxhr, textStatus, error) {
var err = textStatus + ', ' + error;
alert("Request Failed: " + err);
});
};
$(document).ready(main);
var main=函数(){
“严格使用”;
变量url=”http://api.flickr.com/services/feeds/photos_public.gne?tags=catss&lang=en-us&format=json&jsoncallback=?”;
var$searchInput=$(“”);
$(“标题”).append($searchInput);
$.getJSON(url,函数(flickrResponse){
flickrResponse.items.forEach(函数(照片){
变量$img=$(“
上述代码导致:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<body>
<header><input></header>
<main>
<div class="photos">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="" src="http://farm9.staticflickr.com/8299/7875996296_734b9c599d_m.jpg">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
<img style="">
</div>
</main>
<footer> </footer>
<script src="http://code.jquery.com/jquery-2.1.4.min.js">
<script src="javascripts/app.js">
</body>
</html>
为什么要添加这么多img标签?您有这一行
$("main .photos").append($img);
添加到forEach中,这就是为什么html标记在具有类“photos”的div下多次附加图像标记的原因
更新(以防止附加空img标记):
var main=函数(){
“严格使用”;
变量url=”http://api.flickr.com/services/feeds/photos_public.gne?tags=catss&lang=en-us&format=json&jsoncallback=?”;
var$searchInput=$(“”);
$(“标题”).append($searchInput);
$.getJSON(url,函数(flickrResponse){
flickrResponse.items.forEach(函数(照片){
var$img=$(“您正在为返回数组中的每个项目创建一个新的键控处理程序,还应该使用隐藏/显示iamges,而不是删除和设置空的src
var main=function(){
“严格使用”;
变量url=”http://api.flickr.com/services/feeds/photos_public.gne?tags=catss&lang=en-us&format=json&jsoncallback=?”;
var$searchInput=$(“”);
$searchInput.on(“按键”,函数(事件){
var项=该值;
如果(event.keyCode===13){
$(.main.photos img”).hide().each(函数(){
var$img=$(本);
var tags=$img.data('tags');
if(标签索引OF(术语)>-1){
$img.fadeIn();
}
})
}
});
$(“标题”).append($searchInput);
$.getJSON(url,函数(flickrResponse){
flickrResponse.items.forEach(函数(照片){
console.log('x')
变量$img=$(“
是flickrResponse.items.forEach的原因。
如果您需要帮助,请用代码创建一个fiddle。fiddle意味着使用此网站或其他类似网站向我们展示一个~working example~很好,我在fiddle上添加了代码,但运行时遇到问题。@tasqyn该链接不是到jsfiddle:)@Nenotlep抱歉,意外粘贴了:)如何防止添加空的img标签?它可以防止,但当它第一次运行时,不会显示所有图像。非常感谢您的帮助:)
var main = function () {
"use strict";
var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=catss&lang=en-us&format=json&jsoncallback=?";
var $searchInput = $("<input>");
$("header").append($searchInput);
$.getJSON(url, function (flickrResponse) {
flickrResponse.items.forEach(function (photo) {
var $img = $("<img>").hide();
$img.attr("src", photo.media.m);
$searchInput.on("keypress", function (event) {
if (event.keyCode === 13) {
$img.remove();
$img.removeAttr('src');
var $tag = photo.tags.split(" ");
$tag.forEach(function (tag) {
if (tag === $searchInput.val()) {
$img.attr("src", photo.media.m);
$("main .photos").append($img);
$img.fadeIn();
}
});
}
});
//$("main .photos").append($img);
//$img.fadeIn();
});
}).fail(function (jqxhr, textStatus, error) {
var err = textStatus + ', ' + error;
alert("Request Failed: " + err);
});
};