如何使此JavaScript代码在Opera中工作

如何使此JavaScript代码在Opera中工作,javascript,html-table,cross-browser,opera,Javascript,Html Table,Cross Browser,Opera,以下代码适用于最新版本的Firefox、Chrome、Safari和IE,但不适用于Opera。当我使用Opera单击add按钮时,行中似乎添加了一个非常小的空间,但没有其他内容。。。有人能帮忙吗? 表格: <form method="post" action="send.php"> <table id="table"> <tr><th>job</th><th>comment</th></tr> &l

以下代码适用于最新版本的Firefox、Chrome、Safari和IE,但不适用于Opera。当我使用Opera单击add按钮时,行中似乎添加了一个非常小的空间,但没有其他内容。。。有人能帮忙吗? 表格:

<form method="post" action="send.php">
<table id="table">
<tr><th>job</th><th>comment</th></tr>
<tr>
<td><textarea name = "job[]"></textarea></td>
<td><textarea name = "comment[]"></textarea></td>
<tr>
</table>
<input type ="button" value="add entry" onclick="add('table')"/>
<input type ="submit" id="submit" value="submit"/>

工作评论
JavaScript:

var names = ['job[]', 'comment[]'];

function add(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;

for (var i=0; i<colCount; i++) {
    var newcell = row.insertCell(i);
    var newentry = document.createElement('textarea');
    newentry.type = "text";
    newcell.appendChild(newentry);
    }
}
var name=['job[]','comment[]';
函数添加(tableID){
var table=document.getElementById(tableID);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var colCount=table.rows[0].cells.length;

对于(var i=0;i使用本机DOM方法,如
.createElement
创建所有浏览器都支持的TR(行)和TD(单元格)

您的代码可能如下所示:

var names = ['job[]', 'comment[]'];

function add(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.getElementsByTagName("TR").length;
var row = document.createElement("TR")
var colCount = table.getElementsByTagName("TR")[0].childNodes.length;

for (var i=0; i<colCount; i++) {
    var newcell = document.createElement("TD");
    row.appendChild(newcell);
    var newentry = document.createElement('textarea');
    newentry.type = "text";
    newcell.appendChild(newentry);
    }
}
table.appendChild( row );
}
var name=['job[]','comment[]';
函数添加(tableID){
var table=document.getElementById(tableID);
var rowCount=table.getElementsByTagName(“TR”).length;
var行=document.createElement(“TR”)
var colCount=table.getElementsByTagName(“TR”)[0].childNodes.length;

对于(var i=0;i使用本机DOM方法,如
.createElement
创建所有浏览器都支持的TR(行)和TD(单元格)

您的代码可能如下所示:

var names = ['job[]', 'comment[]'];

function add(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.getElementsByTagName("TR").length;
var row = document.createElement("TR")
var colCount = table.getElementsByTagName("TR")[0].childNodes.length;

for (var i=0; i<colCount; i++) {
    var newcell = document.createElement("TD");
    row.appendChild(newcell);
    var newentry = document.createElement('textarea');
    newentry.type = "text";
    newcell.appendChild(newentry);
    }
}
table.appendChild( row );
}
var name=['job[]','comment[]';
函数添加(tableID){
var table=document.getElementById(tableID);
var rowCount=table.getElementsByTagName(“TR”).length;
var行=document.createElement(“TR”)
var colCount=table.getElementsByTagName(“TR”)[0].childNodes.length;

对于(var i=0;i这一行:
newentry.type=“text”
在Opera中导致异常:
Uncaught exception:domeexception:NO\u MODIFICATION\u ALLOWED\u ERR
。这一行无论如何都不做任何事情(至少在Chrome中),因此我想您可以删除它

var newentry = document.createElement('textarea');
newentry.type = "text";
console.log(newentry.type);

->textarea

这一行:
newentry.type=“text”
在Opera中导致异常:
未捕获异常:DomeException:不允许修改\u ERR
。这一行无论如何都不起作用(至少在Chrome中),因此我想您可以删除它

var newentry = document.createElement('textarea');
newentry.type = "text";
console.log(newentry.type);

->textarea
设置
newentry.type
给出

未捕获异常:DomeException:不允许修改\u错误

实际上,没有
textarea
的type属性。如果要使用
input
,则需要该类型

如果删除设置类型的行,则效果良好

我还发现了代码中的另一个错误:您没有关闭第二行,而是打开一个新的行

这是一个好代码:





设置
新建条目。键入

未捕获异常:DomeException:不允许修改\u错误

实际上,没有
textarea
的type属性。如果要使用
input
,则需要该类型

如果删除设置类型的行,则效果良好

我还发现了代码中的另一个错误:您没有关闭第二行,而是打开一个新的行

这是一个好代码:





我没有测试这个,但是你可以试试这个:
newentry.style.height='20px';
在将
textarea
附加到单元格之前。谢谢你的建议,但它不起作用……:(如果你在Opera中运行代码后检查表,它是否包含新行、单元格和textarea?(你可以使用Dragonfly进行此操作)嗨,Jani,你说的“检查”是指查看源代码吗?如果是的话,那里什么都没有;另一方面,如果我在其他浏览器上检查源代码,我也看不到附加的新行、单元格等,即使我可以看到(作为用户)在浏览器上创建的新行然后填写表格。你可能是指其他的东西;我会下载蜻蜓并报告回来。谢谢!嗨,Jani,原来蜻蜓是内置的(谢谢提醒!)看起来我的代码实际上还行;是我的if/else代码出错了。谢谢你的帮助!我没有测试这个,但你可以试试这个:
newentry.style.height='20px';
然后再将
文本区域
添加到单元格中。谢谢你的建议,但它不起作用…:(如果您在Opera中运行代码后检查表,它是否包含新行、单元格和textarea?(您可以使用Dragonfly)Hi Jani,通过“inspect”你的意思是查看源代码吗?如果是的话,那里什么都没有;另一方面,如果我在其他浏览器上检查源代码,我也看不到附加的新行、单元格等,即使我可以看到(作为用户)在浏览器上创建的新行然后填写表格。你可能是指其他的东西;我会下载蜻蜓并报告回来。谢谢!嗨,Jani,原来蜻蜓是内置的(谢谢提醒!)看起来我的代码实际上还行;是我的if/else代码搞乱了。谢谢你的帮助!嗨,Epuri,谢谢你的建议。我还是JavaScript的新手。你介意告诉我如何使用.createElement创建行和单元格吗?嗨,Epuri,谢谢你的建议。我还是JavaScript的新手。你介意告诉我如何使用.createElement创建行和单元格吗如何使用.createElement创建行和单元格?谢谢!卡普西建议了相同的解决方案:)谢谢!卡普西建议了相同的解决方案:)