Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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
Javascript 通过'appendChild'don';不会出现在IE6/7中(也可以是“onclick”事件未触发)_Javascript_Internet Explorer_Events_Dom_Html Table - Fatal编程技术网

Javascript 通过'appendChild'don';不会出现在IE6/7中(也可以是“onclick”事件未触发)

Javascript 通过'appendChild'don';不会出现在IE6/7中(也可以是“onclick”事件未触发),javascript,internet-explorer,events,dom,html-table,Javascript,Internet Explorer,Events,Dom,Html Table,考虑以下JavaScript代码,该代码旨在使用id=“c”在容器div内创建一个8x8表: //首先,两个快捷功能 函数$id(a){return(a&&a.nodeType)?a:document.getElementById(a);} 函数$cr8(a){返回文档.createElement(a);} //现在是肉 变量ct=$id('c'), t=$cr8(‘表’), tr,td,, 行=8,列=8, tdclkfn=函数(){alert('row:'+this.i+'col:'+thi

考虑以下JavaScript代码,该代码旨在使用
id=“c”
在容器div内创建一个8x8表:

//首先,两个快捷功能
函数$id(a){return(a&&a.nodeType)?a:document.getElementById(a);}
函数$cr8(a){返回文档.createElement(a);}
//现在是肉
变量ct=$id('c'),
t=$cr8(‘表’),
tr,td,,
行=8,列=8,
tdclkfn=函数(){alert('row:'+this.i+'col:'+this.j);}

for(var i=0;i
table
元素不能直接包含
tr
元素;IE和其他浏览器很乐意在解析标记时为您处理它(自动插入
tbody
;见下文),但显然IE在直接操作DOM时更为挑剔

如果在其中放置
tbody
,IE6和IE7会很高兴(显示框,单击处理程序工作):

(注意编号
t车身

JavaScript:

window.onload = function() {
  var elm, markup;

  elm = document.getElementById('theTable');
  markup = ["<ol>"];
  walk(elm);
  markup.push("</ol>");
  display(markup.join(""));

  function walk(node) {
    var child;

    markup.push("<li>");
    markup.push(node.nodeName);
    if (node.nodeType === 1 ||
        node.nodeType === 9 ||
        node.nodeType === 11) {
      markup.push("<ol>");
      for (child = node.firstChild;
           child;
           child = child.nextSibling) {
        walk(child);
      }
      markup.push("</ol>");
    }
    markup.push("</li>");
  }

  function display(markup) {
    var div = document.createElement('div');
    div.innerHTML = markup;
    document.body.appendChild(div);
  }
};
window.onload=function(){
var-elm,markup;
elm=document.getElementById('theTable');
标记=[“”];
步行(榆树);
markup.push(“”);
显示(markup.join(“”);
功能行走(节点){
var-child;
markup.push(“
  • ”); markup.push(node.nodeName); 如果(node.nodeType==1|| node.nodeType==9|| node.nodeType==11){ markup.push(“”); for(child=node.firstChild; 小孩 child=child.nextSibling){ 步行(儿童); } markup.push(“”); } markup.push(“
  • ”); } 函数显示(标记){ var div=document.createElement('div'); div.innerHTML=标记; 文件.正文.附件(div); } };
    输出:

  • 桌子
  • t车身
  • TR
  • 运输署
  • #正文
  • 请注意其中的
    t车身


    元素不能直接包含
    tr
    元素;IE和其他浏览器在解析标记时很乐意为您处理它(自动插入
    tbody
    ;请参见下文),但当您直接操作DOM时,IE显然更挑剔

    如果在其中放置
    tbody
    ,IE6和IE7会很高兴(显示框,单击处理程序工作):

    (注意编号
    t车身

    JavaScript:

    window.onload = function() {
      var elm, markup;
    
      elm = document.getElementById('theTable');
      markup = ["<ol>"];
      walk(elm);
      markup.push("</ol>");
      display(markup.join(""));
    
      function walk(node) {
        var child;
    
        markup.push("<li>");
        markup.push(node.nodeName);
        if (node.nodeType === 1 ||
            node.nodeType === 9 ||
            node.nodeType === 11) {
          markup.push("<ol>");
          for (child = node.firstChild;
               child;
               child = child.nextSibling) {
            walk(child);
          }
          markup.push("</ol>");
        }
        markup.push("</li>");
      }
    
      function display(markup) {
        var div = document.createElement('div');
        div.innerHTML = markup;
        document.body.appendChild(div);
      }
    };
    
    window.onload=function(){
    var-elm,markup;
    elm=document.getElementById('theTable');
    标记=[“”];
    步行(榆树);
    markup.push(“”);
    显示(markup.join(“”);
    功能行走(节点){
    var-child;
    markup.push(“
  • ”); markup.push(node.nodeName); 如果(node.nodeType==1|| node.nodeType==9|| node.nodeType==11){ markup.push(“”); for(child=node.firstChild; 小孩 child=child.nextSibling){ 步行(儿童); } markup.push(“”); } markup.push(“
  • ”); } 函数显示(标记){ var div=document.createElement('div'); div.innerHTML=标记; 文件.正文.附件(div); } };
    输出:

  • 桌子
  • t车身
  • TR
  • 运输署
  • #正文
  • 请注意其中的
    t车身


    有点啰嗦,但你最终还是做到了。:-)底线是当使用DOM构建表时,即需要显式添加TBODY元素,其他浏览器默认情况下会添加它。@RobG:LOL好吧,我认为开头的一段很简短,切中要害。我只是举了一两个例子。。。(另外,我完全忘记了
    tbody
    会发生什么,因为我很久没有明确地包含它们了;所以我仔细检查了一下……)回答得很好。还含蓄地解释了为什么
    ct.innerHTML+=
    使事物可见。。。IE6/7可以容忍松散的标记(我们基本上直接在这里插入)。@Weston C:啊,是的,我实际上没有提到,是吗?但你在上面。:-)很高兴这有帮助,有点啰嗦TJ,但你最终还是做到了。:-)底线是当使用DOM构建表时,IE需要显式添加TBODY元素,其他浏览器默认情况下会添加它。@RobG:LOL好吧,我认为开头的段落很简短,切中要害。我只是举了一两个例子。。。(另外,我完全忘记了
    tbody
    会发生什么,因为我很久没有明确地包含它们了;所以我仔细检查了一下……)回答得很好。还含蓄地解释了为什么
    ct.innerHTML+=
    使事物可见。。。IE6/7可以容忍松散的标记(我们基本上直接在这里插入)。@Weston C:啊,是的,我实际上没有提到,是吗?但你在上面。:-)很高兴这有帮助,
    <table id='theTable'><tr><td>Test</td></tr></table>
    
    window.onload = function() {
      var elm, markup;
    
      elm = document.getElementById('theTable');
      markup = ["<ol>"];
      walk(elm);
      markup.push("</ol>");
      display(markup.join(""));
    
      function walk(node) {
        var child;
    
        markup.push("<li>");
        markup.push(node.nodeName);
        if (node.nodeType === 1 ||
            node.nodeType === 9 ||
            node.nodeType === 11) {
          markup.push("<ol>");
          for (child = node.firstChild;
               child;
               child = child.nextSibling) {
            walk(child);
          }
          markup.push("</ol>");
        }
        markup.push("</li>");
      }
    
      function display(markup) {
        var div = document.createElement('div');
        div.innerHTML = markup;
        document.body.appendChild(div);
      }
    };