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 はand属性について述べReserved for future useています)。forevent

于 2012-07-13T10:32:32.123 に答える