irefox和ie下的select option js相关操作

简介:

FireFox中,很多的js操作与IE中是不同的。现在本文就不同操作给予说明。

JS 操作select 标签

1, 添加 option

< select>
< option value="aaa">123</ option>
< option value="bbb">456</ option>
</ select>
<button onclick="myOption=document.getElementsByTagName(' select')[0];myOption.options[myOption.options.length]=new Option('guoshuangText','guoshuangValue')"> add option</button>





2, 删除 optionfirefoxselect.remove(selectedIndex),而不是 select.options.remove()

针对这一问题在编写代码中有一个解决办法:

try{

select1.options.remove(j);

// 首先执行这个操作,因为大部分用户都是使用ie

}

catch(e)

{

// 如果抛出异常的话,就尝试firefox的操作

select1.remove(j);

}


3,输出 option[x].innerText 在 firefox 下用 options[x].textContent(firefox没有innerText,就是用textContent 来替代的)

< select onchange=”alert(this[selectedIndex].textContent)”>
< option value=”aaa”>123</ option>
< option value=”bbb”>456</ option>
</ select>


4,在firefox 中判断select是否选中,不能用

for(var j=0 ; j < select1.options.length;j ++)

{

if(select1.options[j].selected){}

}


而是应该这样

for(var j=0 ; j < select1.options.length;j ++) {

var checka = select1.options[j].selected;

if(checka){} }


这种情况在ie和firefox中是通用的,但是为什么这样呢,具体原因现在还不清楚。

5,对于select 的onclick事件,ie支持在select中设置onclick事件,在option中设置无效,但是在Firefox中,支持option的 onclick事件,在select中设置无效。另外,如果在onclick中想要得到点击的是哪一个option,是得不到的。为什么呢?因为在点击事件是发生在选择之前的,只有点击之后才能确定哪一个被选中了。所以在这是设置了一个定时函数,在单击之后60ms执行来判断哪个选中。

下面给出了解决办法。

<script type="text/javascript" >



function simOptionClick4IE(){

var evt=window.event ;

var selectObj=evt?evt.srcElement:null;

// IE Only

if (evt && selectObj ) ) { // 事件存在



// 记录原先的选中项

var oldIdx = selectObj.selectedIndex;



setTimeout(function(){

var option=selectObj.options[selectObj.selectedIndex];

// 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex

// 来判断用户是不是点击了同一个选项,进而做不同的处理.

showOptionValue( option)



}, 60);

}

}

function showOptionValue(opt,msg){

var now=new Date();

var dt= (1900+now.getYear())+'-'+(now.getMonth()+1)+'-'+now.getDate()+

' '+now.getHours()+':'+now.getHours()+':'+now.getSeconds()+'.'+now.getMilliseconds();

var resultZone=document.getElementById('reslut');

resultZone.style.margin="10px";

resultZone.innerHTML=dt +" 时,点击了: " + (opt.text + ' = '+opt.value);

}

</script>

< select onclick="simOptionClick4IE()" >

<!-- 下面的 onclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->

< option value="1" onclick="showOptionValue( this )" >aaaaa</ option>

< option value="2" onclick="showOptionValue( this )" >bbbbb</ option>

< option value="3" onclick="showOptionValue( this )" >ccccc</ option>

</ select> <div id="reslut" ></div>

IE 6中使用document.createElement和appendChild无法显示

<script type=”text/javascript”>
var i = 0;
function change(){
i++;
var tb=document.getElementById(”t1″)
var txt = document.createElement(”input”);
var tr1 = document.createElement(”tr”);
var td1= document.createElement(”td”);
var td2= document.createElement(”td”);
td2.setAttribute(”width”,”123″)
td2.setAttribute(”bordercolor”,”#FFFFFF”)
td2.setAttribute(”bgcolor”,”#CAE2EB”)

td1.setAttribute(”width”,”401″)
td1.setAttribute(”align”,”left”)
td1.setAttribute(”bordercolor”,”#FFFFFF”)
td1.setAttribute(”bgcolor”,”#FFFFFF”)
td1.innerHTML=”phone”+i+”1″;
td2.innerHTML=”电话号码”+i+”1″;
txt.setAttribute(”name”,”phone”+i+”1″);
txt.setAttribute(”type”,”text”);
txt.setAttribute(”size”,”15″);
txt.setAttribute(”maxlength”,”15″);

td2.appendChild(td2);
tr1.appendChild(td2);
tr1.appendChild(td1);

td1.appendChild(txt);
‘tb.appendChild(tr1);
tb.appendChild(tr1);
}
</script>

问题IE6对appendChild的函数不支持,

IE6 增加TR用 TABLEOBJ.insertRow()
增加TD用 TROBJ.insertCell()

参考IE6可正常执行的代码:

<script>
var j=0
function add_row(){
k=j+1
j=sqd.rows.length;
newRow=document.all.sqd.insertRow(-1)
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=j
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=Number type=radio >”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=SerialNumber type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=ProductName type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=PieceNo type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=Quantity type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=GrossWeight type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=CountWeight type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=UnitPrice type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=Amount type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=CustOrder type=text class=INPUT1 size=3>”
newcell=newRow.insertCell()
newcell.style.backgroundColor=’#f7f7f7′
newcell.innerHTML=”<input name=Description type=text class=INPUT1 size=3>”
}
function del_row() {
if(sqd.rows.length==1) return;
var checkit = false
for (var i=0;i<document.all.Number.length;i++) {
if (document.all.Number[i].checked) {
checkit=true;
sqd.deleteRow(i)
break;
}
}
if (checkit) {
for(i=1;i<sqd.rows.length;i++){
sqd.rows[i].cells[0].innerText=i
}

} else
{
alert(”请选择一个要删除的对象”);
return false}
}
</script><table width=90% border=0 align=”center” cellpadding=2 cellspacing=1 bgcolor=”#FFFFFF”>
<tr>
<td height=”25″ class=”table1″>
<div align=”center”><font color=”#FFFFFF”><strong>≡≡≡ 货 运 单 概 要 ≡≡≡</strong></font></div></td>
</tr>
<tr>
<td align=center valign=top bgcolor=f7f7f7><table id=”sqd” width=”90%” border=”0″ cellpadding=”0″ cellspacing=”1″ bgcolor=”#999999″>
<tr bgcolor=”#BAC2DA”>
<td height=”25″>
<div align=”center”>序号</div></td>
<td>
<div align=”center”>选中
<input name=Number type=hidden >
</div></td>
<td>
<div align=”center”>货物编号</div></td>
<td>
<div align=”center”>货物品名</div></td>
<td>
<div align=”center”>件数</div></td>
<td>
<div align=”center”>数量</div></td>
<td>
<div align=”center”>毛重</div></td>
<td>
<div align=”center”>计货重量</div></td>
<td>
<div align=”center”>费率</div></td>
<td>
<div align=”center”>金额</div></td>
<td>
<div align=”center”>客户定单号</div></td>
<td>
<div align=”center”>备注</div></td>
</tr>
</table>
<br>
<input name=”Submit5″ type=”button” onClick=add_row() class=”button” value=” 添 加 “>
<input name=”Submit33″ onclick=del_row() type=”button” class=”button” value=” 删 除 “>
</td>
</tr>
</table>




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2010/01/05/1639907.html,如需转载请自行联系原作者

相关文章
|
4天前
|
缓存 JavaScript 前端开发
【JavaScript 技术专栏】DOM 操作全攻略:从基础到进阶
【4月更文挑战第30天】本文深入讲解JavaScript与DOM交互,涵盖DOM基础、获取/修改元素、创建/删除元素、事件处理结合及性能优化。通过学习,开发者能掌握动态改变网页内容、结构和样式的技能,实现更丰富的交互体验。文中还讨论了DOM操作在实际案例、与其他前端技术结合的应用,助你提升前端开发能力。
|
5天前
|
存储 缓存 JavaScript
【Web 前端】JS哪些操作会造成内存泄露?
【4月更文挑战第22天】【Web 前端】JS哪些操作会造成内存泄露?
|
8天前
|
JavaScript 前端开发
js操作字符串的相关方法
js操作字符串的相关方法
9 3
|
8天前
|
JavaScript 前端开发
js 操作数组的方法
js 操作数组的方法
18 4
|
9天前
|
JavaScript
js_操作dom(委托和冒泡事件)
js_操作dom(委托和冒泡事件)
13 0
|
12天前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
19天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
16 0
|
19天前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下浏览器的同源策略。
**同源策略**是浏览器安全基石,它阻止脚本跨不同协议、域名或端口访问资源,防止恶意行为。例如,HTTP页面无法直接用JS获取HTTPS页面内容。**CORS**允许跨域请求,但需服务器配合设置,通过`document.domain`属性可配置,但仍受限于服务器配置。
16 4
|
19天前
|
JavaScript 前端开发
JavaScript DOM 操作:如何检测浏览器是否支持某个特性?
【4月更文挑战第15天】使用Modernizr库检测浏览器特性:添加 `<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>` 到HTML,然后通过 `Modernizr.localstorage` 进行检测,如支持localStorage则执行相应代码,否则执行备用逻辑。
15 0
|
20天前
|
JavaScript 前端开发
JavaScript DOM 操作:如何选中一个 HTML 元素?有哪些方法?
在JavaScript中,有五种主要方法选取HTML元素:1) `getElementById` 通过id选取单个元素;2) `getElementsByClassName` 选取具有特定类名的所有元素;3) `getElementsByTagName` 选取特定标签的所有元素;4) `querySelector` 使用CSS选择器选取单个元素;5) `querySelectorAll` 选取匹配CSS选择器的所有元素。这些方法结合使用可精确地定位到DOM树中的目标元素。
12 1