在我的项目中我有这个JavaScript函数,如下所示;
function refTable(clickon) {
t_threads = document.getElementById("tab_threads");
//Activate timeline for specific thread on active thread onclick in table
t_line = document.getElementById("tline");
t_lineH1 = GetElementInsideContainer("tl_tit", "tl_h4");
var c_type = clickon;
$.ajax({
type: "POST",
url: "trefresh",
data: {},
success: function (data) {
t_threads.innerHTML = "";
$.each(data, function (index) {
var row = t_threads.insertRow(0);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.innerHTML = data[index].OptionID;
cell2.innerHTML = data[index].OptionKey;
cell3.innerHTML = data[index].OptionVal;
cell4.innerHTML = data[index].OptionVal2;
cell5.innerHTML = data[index].OptionThread;
});
var rows = t_threads.rows; // or table.getElementsByTagName("tr");
for (var i = 0; i < rows.length; i++) {
rows[i].onclick = (function() { // closure
var cnt = i; // save the counter to use in the function
return function() {
task_det(this.cells[0].innerHTML);
t_line.style.visibility='visible';
t_lineH1.innerHTML = "TIMELINE FOR PROC. ID: "+this.cells[0].innerHTML;
c_type = this.cells[4].innerHTML;
getTline(c_type)
//alert("row"+cnt+" data="+this.cells[0].innerHTML);
}
})(i);
}
}
});
alert(c_type);
setTimeout(refTable.bind(c_type), 10000);
}
问题在于,只要在我的jquery函数中填充了全局变量c_type
,并且在我发出警报的地方,变量结果&#39; undefined&#39;
如何让c_type
全球化,并保存它的价值?
提前致谢
答案 0 :(得分:1)
要使变量为全局,只需将其声明为函数
var c_type = clickon;
和其他选项可以在全局对象中定义它,在浏览器中它将是窗口..
window.c_type = clickon;
无论如何不是一个定义全局变量的好习惯,它可能会给其他第三方库带来麻烦。
注意:强> 确保你没有在你想要使用的函数中定义相同的变量,在这种情况下,函数将采用函数中定义的变量......