无法追加forEach循环页面

时间:2016-07-20 20:20:32

标签: javascript

对不起,如果我发布错误,第一次使用stackoverflow。但我无法将我的工作对象附加到我的页面。它在页面上,但未定义。这是我的代码

var work = {
    "jobs": [{
            "employer": "Marco Polo",
            "title": "Waiter",
            "location": "East Hartford,CT",
            "dates": "2012 to present",
            "description": "Serves tables and cleans up after restaurant"

        }

    ]
};

work.display = function () {

    work.jobs.forEach(function (job) {
        console.log(job);
        $("#workExperience").append(HTMLworkStart);

        formattedEmployer = HTMLworkEmployer.replace("%data%", work.jobs.employer);
        formattedTitle = HTMLworkTitle.replace("%data%", work.jobs.title);
        var formattedEmployerTitle = formattedEmployer + formattedTitle;
        $(".work-entry:last").append(formattedEmployerTitle);

        formattedworkLocation = HTMLworkLocation.replace("%data%", work.jobs.location);
        $(".work-entry:last").append(formattedworkLocation);
        formattedworkDates = HTMLworkDates.replace("%data%", work.jobs.dates);
        $(".work-entry:last").append(formattedworkDates);
        formattedworkDescrip = HTMLworkDescription.replace("%data%", work.jobs.description);
        $(".work-entry:last").append(formattedworkDescrip);

    });
};

2 个答案:

答案 0 :(得分:1)

您的代码正在遍历jobs数组,但该数组只有一个元素 - 一个包含作业信息的对象。如果你想迭代这些信息(雇主,标题,位置等),你需要在索引到数组后使用for ... in循环(迭代对象)。

for (var prop in work.jobs[0]) { ...}

答案 1 :(得分:0)

(真诚地道歉,如果这种情况不正确或被误导。首先发帖,请善待;社区对更好答案的任何指导都会非常感激)

我相信问题在于你的forEach循环。 在forEach循环内部" job"将引用work.jobs中的当前迭代。因此,它应该由job.employer引用,而不是引用work.jobs.employer。 您未定义的原因是因为您试图从jobs数组中检索雇主/标题/位置/等,而不是数组中包含的对象。

请尝试以下方法:

CREATE TABLE Tbl (
  Subscription_ID INTEGER
  ,Start_Date DATE
  ,End_Date DATE
  ,Monthly_revenue INTEGER);

INSERT INTO Tbl (Subscription_ID, Start_Date, End_Date, Monthly_revenue)
VALUES (2384105,'2016-01-01','2016-06-01',500);

WITH cteTally AS (
    SELECT 0 AS TallyNum
    UNION ALL
    SELECT 1
    UNION ALL
    SELECT 2
    UNION ALL
    SELECT 3
    UNION ALL
    SELECT 4
    UNION ALL
    SELECT 5
    UNION ALL
    SELECT 6
    UNION ALL
    SELECT 7
    UNION ALL
    SELECT 8
    UNION ALL
    SELECT 9
    UNION ALL
    SELECT 10
    UNION ALL
    SELECT 11
)

SELECT
    Subscription_ID
    ,(t.Start_Date + (c.TallyNum * '1 month'::INTERVAL)) as "Month"
    ,Monthly_revenue
FROM
    Tbl t
    INNER JOIN cteTally c
    ON (
      (DATE_PART('year', t.End_Date) - DATE_PART('year', t.Start_Date)) * 12
      +
      (DATE_PART('month', t.End_Date) - DATE_PART('month', t.Start_Date))
    ) >= c.TallyNum
;