【问题标题】:how to assign JSON variable to outer jQuery function [closed]如何将JSON变量分配给外部jQuery函数[关闭]
【发布时间】:2012-12-12 19:56:26
【问题描述】:

我在 DIV 中显示 JSON 项目列表。如何重新显示特定项目 将鼠标悬停在第二个 DIV 上。

现在,脚本会逐字打印:" + data.items[i].title + ",而不是实际显示值。

可以在下面的脚本中进行哪些更改?提前致谢。

注意:这是一个与我之前的问题不同的问题,因为它处理的是文本,而不是图像。

$.getJSON('1zONE.json', function(data) {
    globalData = data;
    var output="<ul>";
    for (var i in data.items) {
        output += "<li><h1>" + data.items[i].title + "</h1>" + data.items[i].price + "--" + data.items[i].description.one+"</li>";
    }
    output += "</ul>";
    $("#placeholder").html(output);


    $('li').on({
        mouseenter: function() {
        document.getElementById("placeholder2").innerHTML=" + data.items[i].title + ";

        }
    });   
});

这是 JSON 文件 (1zONE.json):

{"items":[
        {
            "id":"1",
            "thumb":"01_sm",
            "thumb2":"01_md",
            "title":"Ray",
            "price":"Villalobos",
            "description": {
                "one":"January",
                "two":12,
                "three":2012
            }
        },
        {
            "id":"2",
            "thumb":"02_sm",
            "thumb2":"02_md",
            "title":"John",
            "price":"Jones",
            "description": {
                "one":"April",
                "two":28,
                "three":2010
            }
        },
        {
            "id":"3",
            "thumb":"03_sm",
            "thumb3":"03_md",
            "title":"Jo",
            "price":"Jo",
            "description": {
                "one":"May",
                "two":8,
                "three":2010
            }
        },
        {
            "id":"4",
            "thumb":"04_sm",
            "thumb3":"04_md",
            "title":"Jo4",
            "price":"Jo4",
            "description": {
                "one":"May4",
                "two":84,
                "three":20104
            }
        }
]}

【问题讨论】:

  • 这是一种相当新的显示值的方法。你应该贡献而不是投反对票。
  • 提示:查看您的问题中突出显示的语法:document.getElementById("placeholder2").innerHTML=" + data.items[i].title + ";
  • 无意冒犯,但这是一个非常非常基本的问题。您应该考虑退后一步,研究初级 JavaScript。
  • 我不知道这是否是“基本”,动态变量会变得很棘手。
  • 脚本本身不是基本的,但如果您无法弄清楚为什么要打印变量的名称而不是其内容,那么它对于您当前的技能水平来说太高级了。

标签: javascript jquery ajax json variables


【解决方案1】:

你搞砸了引号,这个:

document.getElementById("placeholder2").innerHTML=" + data.items[i].title + ";

应该是这样的:

document.getElementById("placeholder2").innerHTML = data.items[i].title;

因为它在一个 jQuery 事件处理程序中,它可能会更容易做到:

$("#placeholder2").html(data.items[i].title);

编辑:

要解决迭代值不持久的问题,您需要一个闭包,所以我想我会为您编写它?

$.getJSON('1zONE.json', function(data) {
    globalData = data;
    var ul = $('<ul />');

    for (var key in data.items) {
        (function(j) {
            var li = $('<li />'),
                h1 = $('<h1 />', {text: data.items[j].title});

            li.append(h1).append(data.items[j].price + "--" + data.items[j].description.one).on('mouseenter', function() {
                $('#placeholder2').html(data.items[j].title);
            }).appendTo(ul);
        })(key);
    }
    $("#placeholder").html(ul);
});​

【讨论】:

  • 这似乎只显示最后一个标题,它不适用于前 3 个。它一定不是循环的,有什么线索为什么它不是?
  • @user1644123 - 当然,您引用的是i,但您是在循环之外进行的,i 将始终是最后一个迭代值。
  • 我将第二个函数放在循环内,但仍然遇到同样的问题
  • @user1644123 - 添加了有关如何执行此类操作的示例。
  • 我对其进行了测试,但它现在在#placeholder 内没有显示任何内容
猜你喜欢
  • 2022-11-27
  • 2013-04-29
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 2014-11-04
相关资源
最近更新 更多