Javascript 通过'appendChild'don';不会出现在IE6/7中(也可以是“onclick”事件未触发)
考虑以下JavaScript代码,该代码旨在使用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
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;itable
元素不能直接包含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);
}
};