JavaScript控制台无法打印username,报错ReferenceError: user未定义
问题解决办法
核心问题原因
带src属性的<script>标签不会执行标签内部的代码,浏览器只会加载并运行外部JS文件,所以你定义的user变量根本没有被初始化,导致cart.js中访问时出现未定义错误。
修复步骤
- 将定义
user变量的代码单独放在一个独立的<script>标签中,并且必须放在引入cart.js的标签之前,确保cart.js加载时这个全局变量已经存在。
修改后的HTML代码
<script type="text/javascript"> var user = '{{request.user}}'; </script> <script type="text/javascript" src="{% static 'js/cart.js' %}"></script>
cart.js代码优化建议(可选)
原代码中用户信息的打印逻辑在循环内部,会随按钮数量重复输出,建议移到循环外:
var updateBtns = document.getElementsByClassName("update-cart"); // 把用户判断移到循环外,避免重复打印 console.log('USER', user); if(user == 'AnonymousUser'){ console.log('Not logged in'); }else{ console.log('User is logged in'); } for(var i=0; i < updateBtns.length; i++){ updateBtns[i].addEventListener('click', function(){ var pid = this.dataset.item; var action = this.dataset.action; console.log('pid:', pid, 'action:', action); }); }
完成以上修改后,cart.js就能正常访问到user变量了。
内容的提问来源于stack exchange,提问作者Saket Vempaty
相关产品推荐
相关产品推荐

