2

无法进入 Chrome 和 Firefox 中的 onclick 和 onmouseout/over 事件的功能。任何不在 Chrome 和 FF 中工作的原因都可以解决这个问题。这些在 IE9 和 Opera 中运行良好。

html页面中的代码如下所示:

     <script language="JavaScript" for="SmartGridCell" event="onclick()">
    sg_CellClick(event.srcElement);
</script>

<script language="JavaScript" for="SmartGridCell" event="onmouseover()">
    sg_MouseOverCell(event.srcElement);
</script>  

更多点击事件...

     <script language="javascript" for="optSet" event="onclick()">
    mc_SelectAnElement(this, document.getElementsByName('optSet'));
</script>

<script language="javascript" for="answerChoice" event="onclick()">
    mc_SelectAnElement(this, document.getElementsByName('answerChoice'));
</script>

这是我到目前为止所做的,但我无法在 Chrome 中触发事件......

 <script language="JavaScript">

  var s1=document.getElementsByName('optSet');

  for (var i=0;i<s1.length;i++)
  {
    s1[i].addEventListener("click",mc_SelectAnElement(this, document.getElementsByName('answerChoice')),false);
  }

</script>

也试过这个,这个片段让我进入函数,但选择的值永远不会持续......

 if (document.addEventListener) 
{
    document.addEventListener("click",function (e){
    var srcElement= e.target;
    var tagName= srcElement.tagName;
    if(tagName="optSet")
    {
        mc_SelectAnElement(srcElement, document.getElementsByName('optSet'));
    }
    //mc_SelectAnElement(this, document.getElementsByName('optSet'));
    },true);
}

谢谢-

4

1 回答 1

3

在现代 JavaScript 中,它会是这样的:

if (document.addEventListener) {
    document.addEventListener('click', function (e) {
        var el = e.target;
        var id = el.id;

        // the "for" attribute refers to an ID
        if (id == 'SmartGridCell' || id == 'SmartGridHeaderCell') {
            sg_CellClick(el);
        }
    }, true);

    /* repeat the same for "mouseover" and "mouseout" */
}

您也可以保留旧脚本,它们不会发生冲突。

为什么这在 IE 中有效——因为他们在 20 年前发明了自己丑陋的 KnockoutJS。它当然是非标准的(DOM 2 表示Reserved for future useandfor属性event)。

于 2012-07-13T10:32:32.123 回答