jquery ie8下无法更新下拉框

发布于 2021-11-09 05:12:12 字数 5932 浏览 930 评论 3

代码作用基本上是一个过滤器,根据后面表格中的东西逐个字段内容过滤,问题出在
$("[base="+filterdec.base+"]").html("");
也就是test按钮中的脚本
我在按钮中执行之后,在下拉第一个框,日期就跟着变,若不手动清空,内容变,但是下拉的内容不变。ff4中正常
而且我也确认上面的语句执行了,可就是和想的不一样。
另外,发现如果在执行过程中出现alert,一些代码就不执行了。我现在不知道是jquery的问题还是ie的问题。
请各位周末抽时间指教,谢谢。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="Rodger Yuan">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://localhost/js/jquery/jquery-1.6.js"></script>
<script type="text/javascript">
<!--
/*//预定义控件
格式:
字段名:{
	label:标签名,显示在控件前,必选
	id:识别符,必选
	tag:何种控件
	type:何种控件
}
*/
var condefs={
	"线名":{
		label:"线名",
		id:"con_xianming",
		tag:"select",
		textdata:"线编号",
		valueoff:-1,
		type:""
	},
	"行别":{
		label:"行别",
		id:"con_xingbie",
		tag:"select",
		valueoff:0,
		type:""
	},
	"日期":{
		label:"日期",
		id:"con_riqi",
		tag:"select",
		value:"",
		valueoff:0,
		type:"text"
	},
	"终止里程":{
		label:"里程",
		id:"con_licheng",
		tag:"input",
		value:"test",
		valueoff:-1,
		type:"text"
	}
};
//转换对象属性为属性字符串
 function getAttrString(o){var result="";for (var a in o ){if(o[a]!='null')result+=" "+a+"='"+o[a]+"'";}return result;}
//给出dom对象和属性名称,返回属性值,简短函数名称
 function ga(dom,attr){return dom.getAttribute(attr);}
 //给出dom元素,返回一个包含其属性的对象
 function go(dom){var obj={};var l=dom.attributes.length;for (var i=0;i<l;i++ )
 {obj[dom.attributes[i].name]=dom.attributes[i].value;

 }return obj;}

	 $("document").ready(function(){
//隐藏数据表	 
	 //$("#selectdata").hide();	
		if($("#selectdata")){
//		遍历数据字段,创建对应的组件
			$("th").each(function(a,b){
				if(condefs[this.getAttribute("title")]){
				var con=condefs[this.getAttribute("title")];
				$("<span tool='label'>"+con.label+":</span><"+ con.tag+" tool='filter' base="+a+ getAttrString(con)+"/>").appendTo($("#filterdiv"));
				}				
			})	
		
		}
		updateData(0);
		$("[tool=filter]").change(function(){ updateData(parseInt(ga(this,"base")));});				
	 });

function updateData(base){
	
	var selector="";
	$("[tool=filter]").each(function(a,b){
		if (parseInt(ga(this,"base"))<=parseInt(base))
		{	
		
				
				selector+="[attr"+(parseInt(ga(this,"base"))+parseInt(ga(this,"valueoff")))+"="+this.value+"]";

		}else{
		
		$("#output").append(ga(b,"id")+":"+$("#"+ga(b,"id")).html("")+"<br>");
			/*for (var i;i<this.children.length;i++)
			{
				this.removeChild(this.children(0));
			}
			*/
		
		}
		
	});
	var s=base>0?selector:"tr[attr0]";
	$("#output").append(s+":"+$(s).length+"<br>");
	
	
	$("[tool=filter]").each(function(){
		var filterdec= go(this);
		var filtertype=filterdec.tag;
		var result=[];
		
		if(parseInt(base)<parseInt(filterdec.base)){
		$("[base="+filterdec.base+"]").html("");	
			$(s).each(function(){
				var row=this;						
				if (filtertype=="select")
				{					
					var html="<option value='"+ ga(row,"attr"+(parseInt(filterdec.base)+parseInt(filterdec.valueoff))) +"'>"+ga(row,"attr"+filterdec.base);
					if(jQuery.inArray(html,result)==-1){			
						$("[base="+filterdec.base+"]").append(html);
						result.push(html);
					}	
				}else if (filtertype=="input")
				{
					//alert("i");
				}
			
			});
		}
	})	
}
//-->
</script>
 



 </head>

 <body>
  <form id="filterdiv" class="">
	
  </form>
  <div id="output" class="">
	
  </div>
  <select name="">
	<option value="1" selected>name1
	<option value="2">name2
	<option value="3">name3
	<option value="4">name4
	<option value="5">name5
  </select><input type="button" value="结果" onclick='$("#results").append( "<tt>" + $("form").serialize() + "</tt>" );'>
  
  <input type="button" value="test" onclick='$("#con_riqi").html("");'>
  <input type="button" value="clear" onclick='$("#output").html("");'><div id="results" class="">
  <div id="results" class="">
	
  </div>
 <table id="selectdata">
<th title="线编号" alt="dd" /><th title="线名" /><th title="行别" /><th title="日期" /><th title="起始里程" /><th title="终止里程" />
<tr  attr0='0002' attr1='京沪' attr2='下' attr3='20110601' attr4='0' attr5='260.5'/>
<tr  attr0='0008' attr1='沪昆' attr2='下' attr3='20110531' attr4='0' attr5='104'/>
<tr  attr0='0008' attr1='沪昆' attr2='下' attr3='20110530' attr4='0' attr5='396.3'/>
<tr  attr0='0634' attr1='宣杭' attr2='下' attr3='20110529' attr4='0' attr5='118.9'/>
<tr  attr0='0636' attr1='萧甬' attr2='下' attr3='20110528' attr4='0' attr5='146.7'/>
<tr  attr0='0613' attr1='金温' attr2='单' attr3='20110527' attr4='0' attr5='252.2'/>
<tr  attr0='0612' attr1='宁启A线' attr2='单' attr3='20110526' attr4='0' attr5='282.761'/>
<tr  attr0='0647' attr1='新长' attr2='单' attr3='20110525' attr4='0' attr5='557.575'/>
<tr  attr0='0001' attr1='京广' attr2='下' attr3='20110524' attr4='0' attr5='133.306'/>
<tr  attr0='0001' attr1='京广' attr2='下' attr3='20110523' attr4='0' attr5='132'/>
<tr  attr0='2001' attr1='迁曹' attr2='下' attr3='20110522' attr4='0' attr5='119.029'/><tr  attr0='0539' attr1='胶新' attr2='单' attr3='20110423' attr4='0' attr5='137'/>
<tr  attr0='0002' attr1='京沪' attr2='下' attr3='20110422' attr4='0' attr5='257.3'/>
<tr  attr0='0644' attr1='合九' attr2='单' attr3='20110421' attr4='0' attr5='280'/>
<tr  attr0='3005' attr1='沪蓉' attr2='下' attr3='20110420' attr4='0' attr5='176.7'/>
<tr  attr0='0373' attr1='石德' attr2='下' attr3='20110419' attr4='0' attr5='170.7'/>
</table>



 </body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

反话 2021-11-12 01:21:02

自己回一下吧。

最终发现应该是ie8把一些可视化的东西缓存了,也就是在外观不变化的情况下,下拉框下拉出来的部分不变。

在清空语句前后增加了.hide() 和.show()就解决了,没发现闪烁的情况,控件多了不知道会不会有闪烁,真是……无语了。

瑾夏年华 2021-11-10 13:20:56

谢谢,我试了,8仍旧不行,6可以。 该死的ie

平定天下 2021-11-09 18:46:42

  属性选择器没有加所属标签也可以吗?

 加上试试,

 $(con.tag+"[base="+filterdec.base+"]").html(""); 

或者不行,换回1.5试一下,之前我们升级1.6就发现有很多BUG,后来又换回来了。

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文