Javascript未正确解析,导致加载时URL发生更改
因此,我有以下代码,作为freecodecamp.com当前天气项目的一部分创建Javascript未正确解析,导致加载时URL发生更改,javascript,Javascript,因此,我有以下代码,作为freecodecamp.com当前天气项目的一部分创建 <html><head> <!--Bootstrap CDN - 3.3.7 Complete CSS--> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJ
<html><head>
<!--Bootstrap CDN - 3.3.7 Complete CSS-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!--jQuery CDN - 3.2.1 Uncompressed-->
<script
src="https://code.jquery.com/jquery-3.2.1.js"
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
crossorigin="anonymous"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>Weather by Current Location</title>
<style>
body{
background-color: #141b28; //Purple
}
#weather-box{
margin-top: 5%;
color: #C0C0C0; //Silver
}
</style>
<script>
//var location = [1,2];
function getLocation(){
}
</script>
</head>
<body>
<div class="row">
<div class="col-md-4 col-md-offset-4 container-fluid text-center"
id="weather-box">
<h1>Weather</h1>
</div>
</div>
</body></html>
按当前位置划分的天气
身体{
背景色:#141b28;//紫色
}
#气象箱{
利润率最高:5%;
颜色:#C0C0;//银色
}
//var位置=[1,2];
函数getLocation(){
}
天气
上面的代码运行得很好,但是当我取消注释
//var location=[1,2]时
并重新加载文档时,本地URL从~/weatherApp/index.html
更改为~/weatherApp/1,2
,加载失败。[1,2]只是测试的占位符。有人能告诉我为什么会发生这种情况吗?很明显,它正在抓取数组的内容,但我不确定它为什么会替换URL?据我所知,我所有的标签、括号和括号都是正确的。这是在Chrome和Firefox中发生的,所以一定是我自己的作品。如果你们能提供任何帮助,我们将不胜感激。我们的位置是全球的
您将获得为其赋值的预期行为
解决这个问题的快捷方法是使用不同的变量名
更好的解决方案可避免以下问题:
- 你以前从未听说过的环球
- 未来引入的新浏览器默认全局设置
- 来自加载到页面上的第三方脚本(包括由浏览器扩展加载的脚本)的全局文件
…首先要避免使用全局变量
将代码包装在IIFE中,使变量在本地范围内:
(function () {
var location = [1,2];
function getLocation(){
}
})();
这显然会阻止您以全局变量的形式访问变量,但除了一些模糊的边缘情况外,您不需要这样做。您应该使用addEventListener
而不是内部事件属性(如onclick
)绑定事件处理程序函数,这样您就不需要事件处理程序函数是全局的。全局的位置是全局的
您将获得为其赋值的预期行为
解决这个问题的快捷方法是使用不同的变量名
更好的解决方案可避免以下问题:
- 你以前从未听说过的环球
- 未来引入的新浏览器默认全局设置
- 来自加载到页面上的第三方脚本(包括由浏览器扩展加载的脚本)的全局文件
…首先要避免使用全局变量
将代码包装在IIFE中,使变量在本地范围内:
(function () {
var location = [1,2];
function getLocation(){
}
})();
这显然会阻止您以全局变量的形式访问变量,但除了一些模糊的边缘情况外,您不需要这样做。您应该使用addEventListener
而不是内在的事件属性(如onclick
)绑定事件处理程序函数,这样您就不需要全局事件处理程序函数。location
是保留的,下面是javascript保留字@NewToJS的列表-它是预定义的,而不是保留的。避开学校。“这常常是错误的。”昆汀说得很对。我以后会记住这一点:)谢谢。location
是保留的,下面是javascript保留字@NewToJS的列表-它是预定义的,不是保留的。避开学校。“这常常是错误的。”昆汀说得很对。我以后会记住这一点:)谢谢。这正是我需要的,谢谢。我现在正在阅读有关事件侦听器的内容,我需要做的每件事都应该是这样。这正是我所需要的,谢谢。我现在正在阅读有关事件侦听器的内容,我需要做的每件事都应该是这样。