一、向指定的table中插入tr和td
1. insertRow
insertRow() 方法用于在表格中的指定位置插入一个新行。
语法
tableObject.insertRow(index)
返回值
返回一个 TableRow,表示新插入的行。
说明
该方法创建一个新的 TableRow 对象,表示一个新的 <tr> 标记,并把它插入表中的指定位置。
新行将被插入 index 所在行之前。若 index 等于表中的行数,则新行将被附加到表的末尾。
如果表是空的,则新行将被插入到一个新的 <tbody> 段,该段自身会被插入表中。
抛出
若参数 index 小于 0 或大于等于表中的行数,该方法将抛出代码为 INDEX_SIZE_ERR 的 DOMException 异常。
2. insertCell
定义和用法
insertCell()方法用于在 HTML 表的一行的指定位置插入一个空的 <td> 元素。
语法
tablerowObject.insertCell(index)返回值
一个 TableCell 对象,表示新创建并被插入的 <td> 元素。
说明
该方法将创建一个新的 <td> 元素,把它插入行中指定的位置。新单元格将被插入当前位于 index 指定位置的表元之前。如果 index 等于行中的单元格数,则新单元格被附加在行的末尾。
请注意,该方法只能插入 <td> 数据表元。若需要给行添加头表元,必须用 Document.createElement() 方法和 Node.insertBefore() 方法(或相关的方法)创建并插入一个 <th> 元素。
抛出
若参数 index 小于 0 或大于等于行中的的表元数,该方法将抛出代码为 INDEX_SIZE_ERR 的 DOMException 异常。
3. deleteRow
deleteRow() 方法用于从表格删除指定位置的行。
二、事件event在IE和FireFox中的兼容性问题
问题详细描述:
window.event无法在firefox上运行W3C不支持windows.event。
解決方法:
可写成如下三种方式:
① 传入event参数
function testEvent(evt) {
evt = evt ? evt : (window.event ? window.event :null);alert(evt);
}
<input type="button" value="测试event" onclick="javascript:testEvent(event)"/>
②不传event参数
var evt = window.event || arguments.callee.caller.arguments[0]; //获取event对象
③ 自定义event方法
function getEvent(){
if(document.all)
return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor==MouseEvent)
|| (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}
var evt = getEvent();// 获取event对象
IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性
三、添加文件上传例子
upload.html
<script type="text/javascript" src="js/multipleUpload.js"></script>
<script type="text/javascript">
function save() {
var the_inputs = document.getElementsByTagName("input");// 获取所有input的标签
for(var n=0; n<the_inputs.length; n++){
if(the_inputs[n].type == "file"){
if(the_inputs[n].value == "") {
alert("附件不能为空!");
return false;
}
}
}
}
function testEvent(evt) {
evt = evt ? evt : (window.event ? window.event : null);
alert(evt);
}
</script>
<tr>
<td>
<label for="_control_file" class="dialog_label">附件:</label>
<div id="fileDiv" >
<table id="conditionTable" class="sort-table" ></table>
</div>
<a href="javascript:void(0);" onclick="addFile();" class="file">添加附件</a>
</td>
</tr>
<tr>
<td><input type="button" class="button" name="saveForm" value="保存" onClick="save()"/></td>
<td><input type="button" class="button" value="测试event" onClick="javascript:testEvent(event)"/></td>
</tr>
multipleUpload.js
/* 向指定的table中插入tr和td */
var i = 0;
function addFile() {
i++;
currRow=document.getElementById('conditionTable').insertRow(0);// 在表格的开头插入一个新行
cellc=currRow.insertCell(0);// 表的一行的指定位置插入一个空的 <td> 元素
cellcContext="<input type='file' id='file_com' contentEditable='false' name='file("
+ (i - 1)
+ ")' size='65'> <button onclick='javascript:removeFile(event);'>删除</button><br>";
cellc.innerHTML=cellcContext;
// onclick='removeFile();'
}
function findTD(o) {
if (o.tagName=="TR" || o.tagName=="TABLE") // event.srcElement.tagName捕获活动标记名称
return;
if (o.tagName=="TD")
return (o);
else
return (o.parentElement);// 鼠标所在对象的上一个对象
}
function removeFile(evt) {
evt = evt ? evt : (window.event ? window.event : null);// 传event参数(方法一)
//var evt=window.event || arguments.callee.caller.arguments[0]; // 不传event参数(方法二)
//var evt=getEvent();// 获取event对象(方法三)
var element=evt.srcElement || evt.target;// FF中的event有这个target属性
o=findTD(element);
document.getElementById('conditionTable').deleteRow(o.parentElement.rowIndex * 1);
}
function getEvent(){ //同时兼容ie和ff的写法
if(document.all)
return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor==MouseEvent)
|| (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}
分享到:
相关推荐
为了更直观地理解两种浏览器中的事件处理差异,我们将通过几个具体的示例来展示如何编写兼容Firefox和IE的事件处理代码。 ##### 3.1 示例1:基本事件处理 ```html 按钮1 按钮2 按钮3 window.onload = function()...
// 兼容IE和Firefox,获取event对象 evt = (evt) ? evt : ((window.event) ? window.event : ""); // 兼容IE和Firefox,获取keyCode var key = evt.keyCode ? evt.keyCode : evt.which; // 显示按键键值 ...
标题中的“一个兼容IE、Chrome和Firefox的HTML固定表头例子”表明这是一个关于网页开发的示例,重点在于实现表格的表头在滚动时保持固定显示,以提供更好的用户阅读体验。这种技术通常用于大数据量的表格,使用户在...
- IE提供了全局`window.event`对象,Firefox则在事件处理函数中传递事件对象。可以使用如下代码进行兼容处理: ```javascript function Submitted(evt) { evt = evt || (window.event ? window.event : null); ...
标题提到的"让Firefox支持event对象实现代码"主要是针对IE和Firefox之间对事件处理方式的差异。IE浏览器在事件处理函数中可以直接通过`window.event`访问到事件对象,而Firefox则不支持这种方式。描述中给出了一个...
这个小例子就是关于如何用JavaScript实现这个功能,使其兼容IE和Firefox浏览器。 首先,我们需要监听键盘事件,以便在用户按下回车键时执行相应的操作。在JavaScript中,我们可以使用`document.onkeydown`来全局...
这是因为不同浏览器对滚轮事件的支持不同,`mousewheel`是大部分浏览器支持的事件,而`DOMMouseScroll`主要在Firefox中使用。 以下是一个简单的jQuery监听滚轮事件的例子: ```javascript $(document).ready...
了解`event.cancelBubble`对于编写兼容IE浏览器的JavaScript代码是至关重要的,尤其是在处理复杂的交互和事件处理时,它可以让你精确地控制事件的传播路径,从而避免不必要的事件处理和提高性能。在现代浏览器中,...
本文将详细介绍如何使用JavaScript编写兼容IE6/7/8、Firefox以及Chrome等主流浏览器的回车键和鼠标焦点事件的代码。 首先,我们来看如何处理回车键事件。在JavaScript中,用户按下回车键时会触发`keydown`或`keyup`...
总之,这个例子提供了一个简洁的解决方案,通过简单的JavaScript逻辑来处理IE和Firefox的兼容性问题,使得多选框全选和反选功能得以顺畅运行。在实际开发中,开发者需要持续关注浏览器的更新和兼容性指南,以确保...
在网页设计过程中,由于不同的浏览器对HTML、CSS和JavaScript的解析和执行方式存在差异,因此开发者经常遇到浏览器兼容性问题,尤其是Internet Explorer(IE)与Firefox之间的不兼容性。以下是一些解决这两种浏览器...
很多时候,在浏览网页时,我们需要考虑用户不小心时关闭窗口的情况,特别是当用户有很重要的数据还没有保存,我们的...这样当用户按了关闭按钮时,便会弹出如下这个窗口(这个是兼容IE和firefox的): 其中”Hello
本文将详细讲解如何使`textarea`在用户填写完文本后自动获取焦点,这一功能对于提高用户体验非常关键,特别是考虑到它在不同浏览器(如IE、Firefox和Chrome)中的兼容性。 首先,我们要明白`textarea`的基本结构。...
在Internet Explorer(IE)中,键盘事件是通过`window.event`对象来访问的,而Netscape、Firefox、Chrome等现代浏览器则使用`event`参数来传递事件对象。因此,为了兼容多种浏览器,我们需要根据事件对象是否存在来...
本篇文章将详细介绍如何利用jQuery实现这一功能,支持包括IE、Firefox、Safari、Chrome和Opera在内的主流浏览器。 首先,我们需要创建一个基本的HTML表格结构,如Code1所示,包含表头(thead)和数据区域(tbody)...
在不同的浏览器中,特别是早期的Internet Explorer (IE) 和Firefox (FF),事件处理的实现存在一些兼容性问题。本文将深入探讨这些差异,并提供解决这些问题的策略。 首先,我们来看`window.event`这个属性。在IE...
5. **浏览器兼容性**:jQuery的一个重要优势是它对多种浏览器的良好兼容性,包括IE6+、Firefox、Chrome、Safari和Opera等。通过使用jQuery,开发者无需关注底层浏览器差异,简化了代码。 6. **代码结构与模块化**:...
本文主要讨论如何在Firefox和Internet Explorer(IE)这两个不同浏览器环境下获取`event`对象。 首先,让我们通过一个简单的例子来理解`event`的获取。考虑一个HTML按钮元素,它通过`onclick`属性触发`myFunc()`...