Javascript生成' undefined'值

时间:2015-11-20 12:00:54

标签: javascript

我使用以下代码动态填充图片的src属性:

function getLocalUrl(item) {
    if (item.item_id != null && item.item_id != "") {
        return host + "images/" + item.item_tid + "-" + item.item_id + ".jpg";
    } else {
        return host + "images/temp/" + item.item_tid + ".jpg";
    }
}
... 
var cont = "<img class=\"image image-large\" src=\"" + getLocalUrl(item) + "\"/>";
$(element).append(cont);

然而,当我查看浏览器发出的http请求时,我会看到其中两个:第一个

/images/undefined-1.jpg

和第二个

/images/correctstring-1.jpg

当然第一个产生错误,但第二个正确地下载图像,因此最终结果是正确的。但我仍然不明白为什么要提出第一个请求。函数getLocalUrl仅被调用一次,并且始终定义item_tid字段(否则将不会生成第二个请求)。我是一个新手,所以我可能会遗漏一些非常基本的东西。

2 个答案:

答案 0 :(得分:0)

替换:

if (item.item_id != null && item.item_id != "") {

使用:

if (item.item_id != null && item.item_id != "" && item.item_tid) {

或者,更短:

if (item.item_id && item.item_tid) {

您没有检查item_tid是否为undefined

但是,这会导致return host + "images/temp/" + item.item_tid + ".jpg";被使用。由于item_tidundefined,您仍然无法获得所需的结果。

问题是,如果 item_tidundefined,则无法根据此构建网址。

答案 1 :(得分:0)

检查item.item_tid是否未定义,因为从您的代码item.item_tid中看到未定义。

更改

if (item.item_id != null && item.item_id != "") {

if (item.item_id && item.item_tid) {