Javascript SyntaxError: missing ; before statement



我正在寻找在我的django网站中使用Javascript/JQuery集成一个便利贴应用程序。

我找到了一些教程,我试图将其插入我的脚本中,但我得到语法错误:

SyntaxError: missing ; before statement      post-it.js:2:19

我不知道Javascript语言,所以对我来说有点复杂,但我看不到;缺少的地方:/

这是我的HTML便利贴部分:

<h1>Post-It</h1>
<input type="button" value="Ajouter un Post-It" id="btn-addNote" />
<div id="board"></div>

这是我的Javascript文件:

(function ($, $S) {
// $jQuery
// $S window.localStorage
// Déclaration des variables
var $board = $('#board'),
// Placement des Post-It
Postick, //Object Singleton contenant les fonctions pour travailler sur le LocalStorage
len = 0,
// Nombre d'objets dans le LocalStorage
currentNotes = »,
// Stockage du code HTML de l'élément Post-It
o; // Données actuelles du Post-It dans le localStorage
// Gérer les Post-It dans le LocalStorage
// Chaque objet est enregistré dans le localStorage comme un Object
Postick = {
add: function (obj) {
obj.id = $S.length;
$S.setItem(obj.id, JSON.stringify(obj));
},
retrive: function (id) {
return JSON.parse($S.getItem(id));
},
remove: function (id) {
$S.removeItem(id);
},
removeAll: function () {
$S.clear();
},
};
// S'il existe des Post-It on les créer
len = $S.length;
if (len) {
for (var i = 0; i < len; i++) {
// Création de tous les Post-It se trouvant dans le localStorage
var key = $S.key(i);
o = Postick.retrive(key);
currentNotes += '<div class="postick"';
currentNotes += ' style="left:' + o.left;
currentNotes += 'px; top:' + o.top;
// L'attribut data-key permet de savoir quelle note on va supprimer dans le localStorage
currentNotes += 'px"><div class="toolbar"><span class="delete" data-key="' + key;
currentNotes += '">x</span></div><div contenteditable="true" class="editable">';
currentNotes += o.text;
currentNotes += '</div></div>';
}
// Ajoute tous les Post-It sur le tableau de bord
$board.html(currentNotes);
}
// Dès que le document est chargé, on rend tous les Post-It Draggable
$(document).ready(function () {
$(".postick").draggable({
cancel: '.editable',
"zIndex": 3000,
"stack" : '.postick'
});
});
// Suppression du Post-It
$('span.delete').live('click', function () {
if (confirm('Etes vous sûr de vouloir supprimer cette note ?')) {
var $this = $(this);
// L'attribut data-key permet de savoir quelle note on va supprimer dans le localStorage
Postick.remove($this.attr('data-key'));
$this.closest('.postick').fadeOut('slow', function () {
$(this).remove();
});
}
});
// Création du Post-It
$('#btn-addNote').click(function () {
$board.append('<div class="postick" style="left:20px;top:70px"><div class="toolbar"><span class="delete" title="Fermer">x</span></div><div contenteditable class="editable"></div></div>');
$(".postick").draggable({
cancel: '.editable'
});
});
// Sauvegarde tous les Post-It lorsque l'utilisateur quitte la page
window.onbeforeunload = function () {
// Nettoyage du localStorage
Postick.removeAll();
// Puis on insère chaque Post-It dans le LocalStorage
// Sauvegarde la position du Post-It, afin de le replacer lorsque la page est chargée à nouveau
$('.postick').each(function () {
var $this = $(this);
Postick.add({
top: parseInt($this.position().top),
left: parseInt($this.position().left),
text: $this.children('.editable').text()
});
});
}
})(jQuery, window.localStorage);

谢谢:)

PS :我认为语法错误来自那里:currentNotes = »,

专业提示:开发时,请保持压痕冷却。这里的缩进是一团糟,很难遵循代码块。我知道你是新来的,所以不用担心,但只要习惯有一个干净的缩进。

现在,如果您获取代码并运行它,在其他地方(Chrome 控制台、jsfiddle 或其他什么),它会告诉您发生错误的确切行,就像 SyntaxError 一样,当引擎检查代码但不运行它时会发生这种错误,因此不需要将所有需要的库与代码一起加载。

如果你检查这个小提琴: http://jsfiddle.net/8now04xs/1 在控制台中,您会注意到错误来自第 54 行,如果您单击它(在 CHrome DevTools 中),它将直接将您引导到有问题的行:http://i.imgur.com/G8tPl92.gifv

你是对的,错误代码来自你说的那行。问题是它不是字符串,也不是数字或有效的关键字。是无效字符。

我没有阅读所有代码,但我想您希望它是一个字符串。在 JavaScript(以及几乎所有语言)中,字符串必须用单引号或双引号括起来,如下所示:

currentNotes = "»",

如果您查看代码的其余部分,您会发现很多字符串遵循此模式,因此您可以更好地理解其工作原理。如果您希望它是一个空字符串,那么您必须正确执行以下操作:

currentNotes = "",

如果你仔细观察,这是有道理的。

修复此错误后,小提琴将失败,因为它将尝试运行代码并遇到很多问题,因为无法在您的 Django 环境中运行。

我在jshint上检查你的代码。 有2个问题。

1 .引用'»'[我已经在评论中提到过这一点。

  1. 缺少;
};失踪;在这一行中。 })(jQuery, window.localStorage);

最新更新