0

此函数在许多标签中内联声明:<i onClick="noteFc('someNoteText1')"> ... <i onClick="noteFc('someNoteText2')"> ... 使用不同的注释文本调用,取决于调用位置。

function noteFc(str){
  var bubble = window.event.srcElement.getElementsByTagName('i')[0];
  diff=...
  bubble.style.left = diff + "px"; 
} 

我的代码在 Chrome 中工作,但 FF 说window.event我在函数中读到的“未定义”,FFevent对象在函数体中不可见,因此事件应该通过函数的显式参数传递,这对我来说意味着所有内联声明(调用?)的函数应该在所有源代码中重写, onClick=noteFc(event, "someNoteTextN"); 但是在 Chrome 中这种编码是什么,其中事件对象的构想不同?一个元素的目标就足够了,因此调用onClick=noteFc(this, "someNoteTextN"); 可能在任何地方都可以使用,但是添加也是很多工作,导致源代码更庞大、更复杂。this函数中嗅探变量noteFc(str)导致盲道,因为FF放入[object Window]这个全局变量,与Chrome值相反[mouseEvent]– 有什么方法可以区分这些值吗?此外,我看不到如何从[object Window]FF 中的整个元素中挖掘单击的元素。

我已经在网上搜索了很多小时,但我只发现 FF 本身将事件作为隐藏参数传递的语句(内联中没有参数声明,定义中只有单独的参数)。不幸的是,所有找到的例子都没有传递真正的论据。如果将显式实参数传递给函数怎么办?在这种情况下,一个事件在哪里隐式地秘密传递给函数? arguments[0]包含str(显式文本参数),并且arguments[1]未定义。是否有任何直接的方法(为了简单起见,读取函数体中的全局变量是最好的)来确定在 Firefox 中触发具有实际参数的内联函数的事件(目标就足够了)?

(jQuery以外的方式。)


已编辑:由于读者提及而添加了引号。

4

1 回答 1

0

你要:

<i onClick="noteFc(event, 'someNoteText1')">

“event”参数被传递给从属性编译的事件处理程序,但是处理程序决定是否将它传递给它调用的noteFc函数。

于 2013-11-12T03:22:40.143 回答