Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom 克隆期间无法在IE中触发事件 下面的代码将克隆一组div及其事件(onclick),该代码对FF运行良好,但在IE的情况下,它不会触发与每个div关联的事件。 第一组{ 边框:1px纯红; } 函数显示工具提示(idx、条件、ev){ 警报(idx+“=”+条件+“=”+ev); } 函数createCloneNode(){ var cloneObj=document.getElementById(“firstdiv”).cloneNode(true); document.getElementById(“maindiv”).appendChild(cloneObj); } 函数init(){ var mainDiv=document.createElement(“div”); mainDiv.id='mainDiv'; var firstDiv=document.createElement(“div”); firstDiv.id='firstDiv'; firstDiv.className='firstDiv'; 对于(var j=0;j_Dom_Javascript Events - Fatal编程技术网

Dom 克隆期间无法在IE中触发事件 下面的代码将克隆一组div及其事件(onclick),该代码对FF运行良好,但在IE的情况下,它不会触发与每个div关联的事件。 第一组{ 边框:1px纯红; } 函数显示工具提示(idx、条件、ev){ 警报(idx+“=”+条件+“=”+ev); } 函数createCloneNode(){ var cloneObj=document.getElementById(“firstdiv”).cloneNode(true); document.getElementById(“maindiv”).appendChild(cloneObj); } 函数init(){ var mainDiv=document.createElement(“div”); mainDiv.id='mainDiv'; var firstDiv=document.createElement(“div”); firstDiv.id='firstDiv'; firstDiv.className='firstDiv'; 对于(var j=0;j

Dom 克隆期间无法在IE中触发事件 下面的代码将克隆一组div及其事件(onclick),该代码对FF运行良好,但在IE的情况下,它不会触发与每个div关联的事件。 第一组{ 边框:1px纯红; } 函数显示工具提示(idx、条件、ev){ 警报(idx+“=”+条件+“=”+ev); } 函数createCloneNode(){ var cloneObj=document.getElementById(“firstdiv”).cloneNode(true); document.getElementById(“maindiv”).appendChild(cloneObj); } 函数init(){ var mainDiv=document.createElement(“div”); mainDiv.id='mainDiv'; var firstDiv=document.createElement(“div”); firstDiv.id='firstDiv'; firstDiv.className='firstDiv'; 对于(var j=0;j,dom,javascript-events,Dom,Javascript Events,,您的代码存在多个问题,这些问题导致它在某些浏览器中无法工作,或者在其他浏览器中部分工作: onmouseover/onmouseout事件 作为属性指定的处理程序 在以下情况下不得复制: 克隆(根据DOM规范在任何浏览器中),这就是您看不到的原因 任何浏览器中的文本下划线效果 在Internet Explorer(IE9之前)中,无法通过使用setAttribute方法设置onxxx属性来分配事件处理程序 您克隆了一个具有id属性的HTML结构,并将其插入到同一文档中,这会产生重复id的问题-

,您的代码存在多个问题,这些问题导致它在某些浏览器中无法工作,或者在其他浏览器中部分工作:

  • onmouseover/onmouseout事件 作为属性指定的处理程序 在以下情况下不得复制: 克隆(根据DOM规范在任何浏览器中),这就是您看不到的原因 任何浏览器中的文本下划线效果
  • 在Internet Explorer(IE9之前)中,无法通过使用setAttribute方法设置onxxx属性来分配事件处理程序
  • 您克隆了一个具有id属性的HTML结构,并将其插入到同一文档中,这会产生重复id的问题-这是“非法”的,并可能导致不可预知的行为

  • 因此,要使代码在每个浏览器中都能正常工作,唯一的解决方案是克隆不带ID的片段,并手动(重新)分配事件处理程序。

    您的代码存在多个问题,这些问题使它要么在某些浏览器中无法工作,要么在其他浏览器中部分工作:

  • onmouseover/onmouseout事件 作为属性指定的处理程序 在以下情况下不得复制: 克隆(根据DOM规范在任何浏览器中),这就是您看不到的原因 任何浏览器中的文本下划线效果
  • 在Internet Explorer(IE9之前)中,无法通过使用setAttribute方法设置onxxx属性来分配事件处理程序
  • 您克隆了一个具有id属性的HTML结构,并将其插入到同一文档中,这会产生重复id的问题-这是“非法”的,并可能导致不可预知的行为

  • 因此,要让代码在每个浏览器中正常工作,唯一的解决方案是克隆没有ID的片段,并手动(重新)分配事件处理程序。

    我同意@Sergey Ilinsky的观点。您首先要了解IE和FF之间的DOM差异

    试试这段代码,应该会有帮助

    Following is the code which will clone a set of div with their events(onclick) which is working fine for FF but in case of IE it is not firing events associated with each div.
    
    
     <html>
        <head>
        <style type='text/css'>
        .firstdiv{
           border:1px solid red;
        }
        </style>
    
        <script language="JavaScript">
        function show_tooltip(idx,condition,ev) {
            alert(idx +"=="+condition+"=="+ev);
        }
    
        function createCloneNode () {
            var cloneObj = document.getElementById("firstdiv").cloneNode(true);
            document.getElementById("maindiv").appendChild(cloneObj);
        }
        function init(){
         var mainDiv = document.createElement("div");
         mainDiv.id = 'maindiv';
         var firstDiv = document.createElement("div");
         firstDiv.id ='firstdiv';
         firstDiv.className ='firstdiv';
         for(var j=0;j<4;j++) {
           var summaryDiv = document.createElement("div");
                summaryDiv.id = "sDiv"+j
                summaryDiv.className ='summaryDiv';
                summaryDiv.onmouseover = function() {this.setAttribute("style","text-decoration:underline;cursor:pointer;");}
                summaryDiv.onmouseout = function() {this.setAttribute("style","text-decoration:none;");}
                summaryDiv.setAttribute("onclick", "show_tooltip("+j+",'view_month',event)");
                summaryDiv.innerHTML = 'Div'+j;
               firstDiv.appendChild(summaryDiv);
         } 
    
         mainDiv.appendChild(firstDiv);
         var secondDiv = document.createElement("div");
         var linkDiv = document.createElement("div");
         linkDiv.innerHTML ='create clone of above element';
         linkDiv.onclick = function() {
            createCloneNode();
         }
         secondDiv.appendChild(linkDiv);
         mainDiv.appendChild(secondDiv);
         document.body.appendChild(mainDiv);
        }
        </script>
        </head>
        <body>
        <script language="JavaScript">
        init()
        </script>
        </body>
        </html>
    
    
    第一组{
    边框:1px纯红;
    }
    var cloneCount=0;
    var bname=navigator.appName;
    var-isIE=false;
    如果(bname==“Microsoft Internet Explorer”){
    伊西=真;
    }
    否则{
    isIE=假;
    }
    函数显示工具提示(idx、条件、ev){
    警报(idx+“=”+条件+“=”+ev);
    }
    函数createCloneNode(){
    var cloneObj=document.getElementById(“firstdiv”).cloneNode(false);
    cloneObj.id++=cloneCount++;
    createSummaryNodes(cloneObj);
    document.getElementById(“maindiv”).appendChild(cloneObj);
    }
    函数createSummaryNodes(firstDiv){
    
    对于(var j=0;j,我同意@Sergey Ilinsky的观点。您首先遇到了IE和FF之间的DOM差异

    试试这段代码,应该会有帮助

    Following is the code which will clone a set of div with their events(onclick) which is working fine for FF but in case of IE it is not firing events associated with each div.
    
    
     <html>
        <head>
        <style type='text/css'>
        .firstdiv{
           border:1px solid red;
        }
        </style>
    
        <script language="JavaScript">
        function show_tooltip(idx,condition,ev) {
            alert(idx +"=="+condition+"=="+ev);
        }
    
        function createCloneNode () {
            var cloneObj = document.getElementById("firstdiv").cloneNode(true);
            document.getElementById("maindiv").appendChild(cloneObj);
        }
        function init(){
         var mainDiv = document.createElement("div");
         mainDiv.id = 'maindiv';
         var firstDiv = document.createElement("div");
         firstDiv.id ='firstdiv';
         firstDiv.className ='firstdiv';
         for(var j=0;j<4;j++) {
           var summaryDiv = document.createElement("div");
                summaryDiv.id = "sDiv"+j
                summaryDiv.className ='summaryDiv';
                summaryDiv.onmouseover = function() {this.setAttribute("style","text-decoration:underline;cursor:pointer;");}
                summaryDiv.onmouseout = function() {this.setAttribute("style","text-decoration:none;");}
                summaryDiv.setAttribute("onclick", "show_tooltip("+j+",'view_month',event)");
                summaryDiv.innerHTML = 'Div'+j;
               firstDiv.appendChild(summaryDiv);
         } 
    
         mainDiv.appendChild(firstDiv);
         var secondDiv = document.createElement("div");
         var linkDiv = document.createElement("div");
         linkDiv.innerHTML ='create clone of above element';
         linkDiv.onclick = function() {
            createCloneNode();
         }
         secondDiv.appendChild(linkDiv);
         mainDiv.appendChild(secondDiv);
         document.body.appendChild(mainDiv);
        }
        </script>
        </head>
        <body>
        <script language="JavaScript">
        init()
        </script>
        </body>
        </html>
    
    
    第一组{
    边框:1px纯红;
    }
    var cloneCount=0;
    var bname=navigator.appName;
    var-isIE=false;
    如果(bname==“Microsoft Internet Explorer”){
    伊西=真;
    }
    否则{
    isIE=假;
    }
    函数显示工具提示(idx、条件、ev){
    警报(idx+“=”+条件+“=”+ev);
    }
    函数createCloneNode(){
    var cloneObj=document.getElementById(“firstdiv”).cloneNode(false);
    cloneObj.id++=cloneCount++;
    createSummaryNodes(cloneObj);
    document.getElementById(“maindiv”).appendChild(cloneObj);
    }
    函数createSummaryNodes(firstDiv){
    对于(var j=0;j