window.event.srcElement不适用于firefox?

时间:2010-07-09 03:41:06

标签: javascript

以下内容对firefox不起作用。我正在尝试删除点击表格行。谁能请帮忙。非常感谢。

<INPUT TYPE="Button" onClick="delRow()" VALUE="Remove">

function delRow(){
   if(window.event){
      var current = window.event.srcElement;
   }else{
      var current = window.event.target;
   }
   //here we will delete the line
   while ( (current = current.parentElement) && current.tagName !="TR");
        current.parentElement.removeChild(current);
}

6 个答案:

答案 0 :(得分:9)

  1. window.event仅限IE。 W3C标准中不存在window.event。
  2. 默认情况下,
  3. 事件对象作为具有W3C标准的事件处理程序的第一个参数传入。
  4. 调用函数的标记中的内联onlick事件意味着事件处理程序正在调用该函数。以您的标记为例。这意味着function() { delRow(); }。如您所见,除非您在IE中,因为事件位于窗口对象中,否则您将无法在event中看到delRow()对象。
  5. parentElement也只是IE,在大多数情况下将其更改为parentNode会起作用。假设父节点也是一个元素。
  6. 我建议您使用jQuery等javascript库,或者如果需要保持相对相同的话,请更改代码。

    <INPUT TYPE="Button" onclick="delRow(event);" VALUE="Remove">
    
    function delRow(e) {
        var evt = e || window.event; // this assign evt with the event object
        var current = evt.target || evt.srcElement; // this assign current with the event target
        // do what you need to do here
    }
    

答案 1 :(得分:1)

您必须使用event.target代替window.event.target才能使用Firefox。尝试使用以下内容。

<INPUT TYPE="Button" onclick="delRow()" VALUE="Remove">

function delRow(){
   if(window.event){
      var current = window.event.srcElement;
   }else{
      current = event.target;
   }
   //here we will delete the line
   while ( (current = current.parentElement) && current.tagName !="TR");
        current.parentElement.removeChild(current);
}

答案 2 :(得分:1)

var CurrentObject = 
    0 < window.navigator.appVersion.toString().indexOf("MSIE") 
    ? 
    window.event.srcElement 
    : 
    evt.target;

答案 3 :(得分:0)

这是Mozilla's documentation of the Event class;可能会给你一些见解。

答案 4 :(得分:0)

永远不要使用单独的浏览器检查,例如“检查MSIE”。

你知道你需要检查多少个浏览器......以及个别浏览器版本...来检查它们吗?

永远不要使用jQuery。自己编写正确的代码。当你不打算使用99%的功能时,永远不要包含(无用的)大型库。

答案 5 :(得分:0)

刚刚发现,在ie&amp; ff和chrome。其他人不知道,但我希望这一切都能在其他方面发挥作用。至少希望如此:) 作为html,JS和PHP的初学者,在这些东西中没有标准是非常烦人的!甚至样式一个简单的div元素可能是一个根据,因为在不同的浏览器上行为不是总是相同的!?

function somefunc()
{
  var callerelement = arguments.callee.caller.arguments[0].target;
  alert(callerelement.id)
}