我在设置educationflag变量时出现问题1.我正在解决的问题是如果标志为1则不调用enableEdit.php文件。
当控件进入if条件时,我想将标志设置为1。此时控件进入if条件但未将变量设置为1.我的代码打印在下面。我
var educationFlag=0;
function editEducation(class){
//I send education in class variable. So class ='education';
var condition=eval(class+'Flag');
if ( condition == 0 ){
$.ajax({
url: "enableEdit.php",
data: "class="+class,
success: function(msg) {
}
})
eval(class+'Flag'=1);
}
}
由于
答案 0 :(得分:3)
如果不尝试解决潜在问题并阻止全球范围的污染,这应该可行。请注意我已将reserved word类重命名为varPrefix
var educationFlag=0;
function editClass(varPrefix) {
if (window[varPrefix+'Flag'] === 0 ){
$.ajax({
url: "enableEdit.php",
data: "class="+varPrefix,
success: function(msg) {
window[varPrefix+'Flag']=1;
}
})
}
}
我在varPrefix变量中发送教育。所以varPrefix ='education';
editClass("education") ...
答案 1 :(得分:1)
传递给函数的class
变量的值是多少?我会做出有根据的猜测,它会像education
那样?是吗?
在这种情况下,第一个eval()
实际上就是这个:
var condition=eval('educationFlag');
第二个是这个:
eval('educationFlag'=1);
第二个失败,因为=1
部分不在字符串中。这是简短的答案,直接解决了你的问题。
然而,更好的答案是使用eval()
是错误的。你永远不应该使用eval()
来做这种事情。由于educationFlag
是一个全局变量,您可以通过window
对象作为数组元素访问它:这意味着您可以执行完全相同的操作,而不必使用有风险的eval()
您可以像这样引用它:window['educationFlag']
因此,您的eval()
行可以像这样替换:
var condition=window[class+'Flag'];
和
window[class+'Flag']=1;
希望有所帮助。
答案 2 :(得分:0)
我不明白你在代码中想要做什么......你说你想“如果flag为1则不调用enableEdit.php”。如果是这样的话,你为什么不能这样做:
if(flag == 1) { ... }
摆脱你的eval
陈述?