假设我有一个包含两个文本框的表格行,我想根据屏幕和一些数组值来操作它们
<tr id ="myrow" style="display:none">
<td>
test1<input type="text" name="some" value ="some">
test2<input type="text" name="test2" value ="test2">
</td>
</tr>
我正在为所有屏幕使用相同的表单。所有屏幕都会呈现相同的表单,因此iam具有隐藏的价值iam基于隐藏操作事物
var somearr = ['AAA','BBB','CCC','DDD'];
//ready function
if ($("#hi_showelements").attr('value')=="screen1"){
$("#firsttd").removeAttr('style'); //we have the td but not shown above
}
else if($("#hi_showelements").attr('value')=="screen2"){
$("#myrow").hide();
else if($("#hi_showelements").attr('value')=="screen3"){
$("#myrow").hide();
}
else if ($("#hi_showelements").attr('value')=="screen4"){
$("#myrow").hide();
}
if($.inArray(somecode,somearr)=='-1'){
$("#myrow").hide();
}
else{
$("#myrow").show();
}
上面的行“myrow”正确隐藏在scrren1,screen2,screen3,screen4 ,. 但我的问题是我无法隐藏在同一屏幕中的行 说“somecode”值是否为“AAA”,它出现在“somearr”中 数组并且不等于“-1”并且显示“#myrow”。 如果“somearr”中出现“somecode”,我怎么能隐藏这一行
答案 0 :(得分:1)
你想要做什么 已经了。如果不是,则应首先清理代码,以便更容易发现错误。
首先,我建议用if
替换第一批switch
语句:
switch ($("#hi_showelements").attr('value')) {
case 'screen1':
$("#firsttd").removeAttr('style');
break;
case 'screen2':
case 'screen3':
case 'screen4':
$("#myrow").hide();
break;
}
接下来,inArray
返回一个整数,而不是字符串。仅仅因为JavaScript允许你将字符串与整数进行比较并不意味着它是个好主意。使用这样的东西:
if($.inArray(somecode,somearr) == -1)
$("#myrow").hide();
else
$("#myrow").show();
如果仍然无效,可能somecode
未正确设置。我们需要看看你定义它的位置。