我在FOR循环中有一个IF函数,它不能识别0以外的任何整数值。
代码如下,带有问题的IF函数是: if(x == 0){curr_year = curr_year;}
<script type = "text/javascript">
var r_array = [
'Row 1',
'Row 2',
'Row 3'
];
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var array_months = months.concat(months);
var x = parseInt(0);
var text_r = "";
var row = "";
var report = "";
var d = new Date();
var curr_year = d.getFullYear().toString().substr(2,2); // 2017 = 17
var prior_year = (d.getFullYear()-1).toString().substr(2,2);
var curr_month = d.getMonth(); // Jan = 0
for (var i_row = 0; i_row < r_array.length; i_row++) {
report = r_array[i_row]
text_r += ("<tr><th>" + report + "</th>"+ this_row(report) +"</tr>");
row = "";
}
function this_row(report) {
x = 0;
for (i_col = curr_month; i_col < curr_month + 13; i_col++) {
if (x==0) {
curr_year = curr_year;
}
else {
curr_year = prior_year;
}
row += "<td><a href = '"+ curr_year +"' target='blank'>" + array_months[i_col] + "-"+ curr_year +"</a></td>";
x++;
}
curr_year = d.getFullYear().toString().substr(2,2);
return row;
}
</script>
当x = 0时,第一列中的年份显示为&#39; 17&#39;正如所料 但是,当x更改为1时,第二列中的年份不显示为&#39; 17&#39;
我已经在第二个脚本中使用相同的变量复制了FOR循环,但是在函数之外,它运行正常。因此,我想知道问题是否与在函数中运行FOR循环有关吗?
非常感谢任何帮助!
答案 0 :(得分:0)
调用函数时,它引用的x
范围与您定义的x
不同。更改函数以使用局部变量x
function this_row(report) {
var x = 0;
...
}
答案 1 :(得分:0)
我通过计算curr_year和prior_year来得到你想要的结果循环执行所以你不会在forLoop的第一次迭代之后松开curr_year的值。
我为了获得你想要的东西而做的另一个改变是根据获取值所需的列来改变if语句,所以代码将是这样的:
function this_row(report) {
x = 0;
for (i_col = curr_month; i_col < curr_month + 13; i_col++) {
var curr_year = d.getFullYear().toString().substr(2,2); // 2017 = 17
var prior_year = (d.getFullYear()-1).toString().substr(2,2);
if (x==2) {
curr_year = curr_year;
}
else {
curr_year = prior_year;
}
row += "<td><a href = '"+ curr_year +"' target='blank'>" + array_months[i_col] + "-"+ curr_year +"</a></td>";
x++;
}
curr_year = d.getFullYear().toString().substr(2,2);
return row;
}
例如,我在这里使用if(x==2)
来获取第三列的值为&#39; 17&#39;如果您想要第二个,只需将其更改为if(x==1)
希望它有所帮助。