为什么我的数组在我的 savetime 函数中未定义,但在其他函数中正常运行
why my array is undefined in my savetime function but running properly in other functions?
>我正在调用我的保存函数,st_bookmark和ed_bookmark数组在我的 JSON stringfy 函数中不显示任何数据,数组未定义或未捕获类型错误发生
<script>
var check = true;
var st_bookmark = new Array();
var str_print = new Array();
var end_print = new Array();
var ed_bookmark = new Array();
</script>
<script>
function save() {
var link = "M7lc1UVf-VE";
var bk_name = $('#bookmark_name').val();
var bk_tags = $('#bookmark_tags').val();
var bk_email = $('#bookmark_email').val();
var user = '@Session["email"]';
var t = st_bookmark.pop();
var ss = ed_bookmark.pop();
var data =
({ name: bk_name, tags: bk_tags, email: bk_email, link: link, start_bookmark: st_bookmark, end_bookmark: ed_bookmark });
$.ajax({
url: '@Url.Action("save_bookmark", "chopaal")',
type: "POST",
contentType: "application/json",
data: { data: data },
success: function () {
window.alert('success!!');
}
});
var check = true;
var st_bookmark = [];
var str_print = [];
var end_print = [];
var ed_bookmark = [];
}
function starttime() {
if (check == true) {
temp = player.getCurrentTime();
st_bookmark.push(temp);
str_print.push((temp / 60).toFixed(2));
document.getElementById("str_book").innerHTML = str_print;
check = false;
} else {
window.alert("Please End The Previous Bookmark");
}
}
function endtime() {
if (check == false) {
temp = player.getCurrentTime();
ed_bookmark.push(temp);
end_print.push((temp / 60).toFixed(2));
document.getElementById("end_book").innerHTML = end_print;
check = true;
} else {
window.alert("Please Add the Starting Bookmark");
}
}
</script>
变量声明在 JavaScript 中被提升:
var data = {start_bookmark: st_bookmark};
var st_bookmark = [];
相当于
var data;
var st_bookmark;
data = {start_bookmark: st_bookmark};
st_bookmark = [];
如您所见,st_bookmark
在获得值分配之前被访问,此时其值仍undefined
。
我想您真正想要的是访问全局声明的同名变量。在这种情况下,您应该从 save
中完全删除这些名称相似的变量的声明。
如果要在 Ajax 调用成功后"重置"这些变量,则需要将赋值移动到success
回调中并删除 var
关键字(以便标识符引用全局变量):
success: function() {
window.alert('success!!');
check = true;
st_bookmark = [];
str_print = [];
end_print = [];
ed_bookmark = [];
}
相关文章:
- 可以Resharper在我的javascript函数声明中添加分号
- 为什么我的JavaScript堆栈排序函数不起作用
- 加速我的复杂函数绘图仪(canvas+javascript)
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 使用JAVASCRIPT转换货币.可以't通过我的函数设置转换后的输入文本字段的值
- 为什么我的控制器没有启动函数.js脚本
- 为什么我的函数没有被调用呢
- 由于某种原因,我的JavaScript函数无法工作
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 我应该如何声明我的自调用函数
- 为什么我的函数没有返回准确的计数
- 为什么我的回调函数没有运行
- 为什么我的jQuery点击函数没有触发
- 我的函数返回“未定义”
- 为什么我的JavaScript函数没有返回选中的数组值
- 用我的函数jquery给出数据/参数
- 为什么我的javascript地理编码函数返回空白结果
- 从未达到我的函数调用-ReactJs 0.12.0
- 我的函数不会返回要保存在数组中的对象
- 我的徽章;如果“;为什么没有调用关联的函数