javascript - 页面上的所有内容在第一次加载时都没有出现,需要刷新然后才能正常工作
问题描述
从技术上讲,没有错误,尽管在访问网页时您不想为了加载内容而必须刷新,因此代码没有尽可能高效和流畅地运行。
控制台日志中显示的错误如下:
jquery.min.js:2 Uncaught TypeError: Cannot read property 'length' of null
at HTMLDocument.<anonymous> (subject-page.html?subjectID=2:375)
at l (jquery.min.js:2)
at c (jquery.min.js:2)
当我单击刷新浏览器按钮时,此错误消失并且一切正常。所以我认为这与加载页面或在不同时间调用某些函数有关,尽管我不太确定并且希望得到任何帮助。
这是确定某些页面内容的 JavaScript
$(document).ready(function() {
if (getParameterByName('subjectID') > 0) {
localStorage.setItem("myFutureCurrentSubjectID", getParameterByName('subjectID'));
getSubject();
getTopicsForSubject();
var topicsString = JSON.parse(localStorage.getItem('myFutureTopicsForSubject'));
} else {
getSubject();
getTopicsForSubject();
var topicsString = JSON.parse(localStorage.getItem('myFutureTopicsForSubject'));
}
var userName = localStorage.getItem('myFutureUserName');
document.getElementById('tabtitle').innerHTML = userName + "'s Future - " + localStorage.getItem('myFutureCurrentSubject');
document.getElementById('subjectTitle').innerHTML = localStorage.getItem('myFutureCurrentSubject');
document.getElementById('menuSubjectName').innerHTML = localStorage.getItem('myFutureCurrentSubject');
localStorage.removeItem('myFutureCurrentTopic');
if (topicsString.length - 1 >= 1) {
document.getElementById('topicCard1Title').innerHTML = topicsString[0];
}
if (topicsString.length - 1 >= 2) {
document.getElementById('topicCard2Title').innerHTML = topicsString[1];
}
if (topicsString.length - 1 >= 3) {
document.getElementById('topicCard3Title').innerHTML = topicsString[2];
}
if (topicsString.length - 1 >= 4) {
document.getElementById('topicCard4Title').innerHTML = topicsString[3];
}
if (topicsString.length - 1 >= 5) {
document.getElementById('topicCard5Title').innerHTML = topicsString[4];
}
if (topicsString.length - 1 >= 6) {
document.getElementById('topicCard6Title').innerHTML = topicsString[5];
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
解决方案
这只是表明对于 key ,当您加载页面时第一次myFutureTopicsForSubject
不存在特定值,因此访问它会返回,这会使您设置为.localStorage
null
topicsString
null
null
尽管在每次后续加载时,即使关闭选项卡或浏览器,您也不能得到,因为localStorage
保存该值的范围更广。您要么明确地执行此操作并key
从localStorage
使用开发人员控制台中删除,要么此处未共享的某些代码部分是有条件地执行此操作。
推荐阅读
- javascript - 我编写了一个基本代码来查找订购数量等于或大于 5 并且金额也超过 20rs 在 javascript 中的高级客户
- java - 为什么主线程在其方法调用latch.await()时开始执行
- php - 如何使用带有 URL 参数的 htacces 重定向页面
- r - 如何更改数据框中的日期?
- javascript - 成功订阅后,Angular 祝酒成功消息
- f# - 具有共享属性的 F# 域建模
- android - 如何在 Android 中创建类似“Tab Layout”的圆形数组?
- jquery - 从 json 中获取值并放入下拉列表
- r - R 中的循环遍历变量名并创建新的滞后变量
- python - 函数 'cvSetMouseCallback' 中的 NULL 窗口处理程序