2017-05-29 145 views
-5

我正在寻找使用Javascript/JQuery在我的django网站中集成应用程序后的应用程序。Javascript SyntaxError:missing;在声明之前

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

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

我不知道的JavaScript langage所以这对我来说有点复杂,但我不”看不到其中;丢失:/

这是我的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:我的事了的SyntaxError来自有权利:currentNotes = »,

+0

-2?我的问题是关注一个真正的问题... – Deadpool

+1

用'»引用你的»。 –

+0

'currentNotes =»,''应该是'currentNotes ='»',' – Mamun

回答

1

普罗蒂普:开发时,保持冷静压痕。你在这里缩进是一团糟,很难跟随代码块。我知道你是新人,所以不要担心,但只是习惯于有一个干净的缩进。

现在,如果您在其他地方(Chrome控制台,jsfiddle或其他)获取代码并执行它,它会告诉您发生错误的确切位置,就像SyntaxError一样,并且发生此类错误时检查代码,但不运行它,所以不需要将所有需要的库随代码一起加载。

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

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

我不读所有的代码,但我想你希望它是一个字符串。在JavaScript(和几乎所有的语言),字符串必须以单或双引号被引用,就像这样:

currentNotes = "»", 

如果你看看周围的代码的其余部分,你会本身有很多的字符串下面这个模式,所以你可以更好地理解它是如何工作的。如果你想要它是一个空字符串,那么你必须这样做:

currentNotes = "", 

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

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

+0

谢谢你的回答;)这是我第一次阅读Javascript脚本。关于缩进,我所有的脚本都是很好的缩进。 我在网站上使用了这个js脚本,因为它是一个贴子的javascript演示。因此,我只是复制/粘贴到我的Django网站。 在萤火虫,我有行post-it.js:2:19所以它意味着行2元素19或行19元素2? – Deadpool

+0

@Deadpool Line 2,character 19.问题是Django以某种方式对你的脚本进行了沙盒处理,所以不是你面前的真实线路。这就是为什么我说要在别处运行它。例如,检查这个小提琴:https://jsfiddle.net/8now04xs/1/如果你看看控制台它说54行,如果你点击它在Chrome DevTools中会引导你到达确切的行(见gif ):http://i.imgur.com/G8tPl92.gifv(我喜欢Chrome DevTools xD) –

0

我在jshint上查看您的密码。 有2个问题。

1。报价'»' [我已经在评论中提到过这件事。]

  • 缺少;
  •  
        }; // Missing ; in this line. 
    })(jQuery, window.localStorage); 
    
    +0

    @Deadpool是否解决了您的问题? –

    相关问题