这是我的第一个标签
<script type="text/javascript">
$(document).ready(function () {
// some code
var showWarning = true;
// more code
});
</script>
然后我有另一个脚本标记:
<script type="text/javascript">
function submitFormLink(){
document.getElementById('vacationApplicationForm').action = '<c:url value="/preview-pdf"/>';
document.getElementById('vacationApplicationForm').method = 'POST';
document.getElementById('vacationApplicationForm').submit();
}
function submitFormButton(){
if (showWarning == true){
alert("hi");
}
document.getElementById('vacationApplicationForm').action = '';
document.getElementById('vacationApplicationForm').method = 'POST';
document.getElementById('vacationApplicationForm').submit();
}
</script>
我得到一个错误,说showWarning是未定义的。我在同一窗口中读到变量全局变量。那么我做错了什么?
答案 0 :(得分:5)
你没有宣布全球化。
您在函数中使用var
关键字,所以:
如果您想要全局,请在全局范围内创建变量:
<script type="text/javascript">
var showWarning = true;
$(document).ready(function () {
// some code
// more code
});
</script>
答案 1 :(得分:1)
您的变量showWarning
不是全局的。范围是文档就绪处理程序。如果你想让它全球化,你就必须做这样的事情
<script type="text/javascript">
var showWarning = true; // now it has global scope
$(document).ready(function () {
// some code
// more code
});
</script>
在javascript中使用全局变量是一种不好的做法,所以你应该避免每次都这样做。有关此问题的详细信息,请在google上查看Pollution of the Global Namespace
答案 2 :(得分:0)
top变量只存在于$(document).ready中,你需要在函数之外声明它:
var showWarning;
$(document).ready(function () {
// some code
showWarning = true;
// more code
});
答案 3 :(得分:0)
在裸<script>
标签内,它将是全局的:
<script type="text/javascript">
var showWarning = true;
</script>
但是,您已经在函数内部,并且您使用var
语句明确地将变量确定为该函数。
如果要在函数内部创建全局变量,请将其附加到window
,这是浏览器中的全局上下文:
<script type="text/javascript">
$(document).ready(function () {
// some code
window.showWarning = true;
// more code
});
</script>
答案 4 :(得分:0)
您没有将showWarning
声明为全局,而是在函数内声明它。如果要将其设置为全局,则需要将定义更改为:
<script type="text/javascript">
var showWarning = true;
$(document).ready(function () {
// some code
答案 5 :(得分:-1)
如果您在javascript上添加 var ,则表示本地变量。尝试删除showWarning变量上的var。
showWarning = true