首页 > 解决方案 > functions.js:1 Uncaught SyntaxError: Unexpected token {

问题描述

var labels = {{ labels|tojson|safe }};
var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
var drawLabels = function(id, xMin, xMax, yMin, yMax) {
  ctx.strokeStyle = "red";
  ctx.fillStyle = "red";
  ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);
  ctx.lineWidth="3";
  ctx.stroke();
  ctx.font = "10px Arial";
  ctx.fillText("id: " + id, xMin,yMin);
};


function redraw() {
    ctx.canvas.width = image.width;
    ctx.canvas.height = image.height;
    c.width = image.width;
    c.height = image.height;
    ctx.drawImage(image, 0, 0);
    for (i = 0; i < labels.length; i++){
        drawLabels(labels[i].id, labels[i].xMin, labels[i].xMax, labels[i].yMin, labels[i].yMax);
    }
}

这是我的 javascript 代码的一部分,我将它们都组合在 javascript/html 代码中,但要求是分开这.js部分。起初它工作得很好,但是当我拆分内容时它停止了,我在我的 javascript 文件上收到了那个错误,functions.js请注意它只是我的 javascript 代码的一部分,因为在没有明确要求的情况下共享超过 150 行代码可能是一个坏事想法,但正如标题所示,错误显然在第 1 行。

标签: javascripthtml

解决方案


  • 在原始 python 文件中保留(后移)第 1 行
  • 在标签末尾包含您的functions.js <body>(以确保var labels=....在生成的HTML中位于functions.js之前)

当您分解出 functions.js 时,python 不再处理该文件,因此这部分{{ labels|tojson|safe }}不会被替换。

这就是为什么您需要将第 1 行移回 python。


推荐阅读