2012-04-19 55 views
0

以下代碼適用於最新版本的Firefox,Chrome,Safari和IE,但不適用於Opera。當我點擊使用Opera的添加按鈕,一個非常薄的空間似乎已經添加到行,但沒有別的......任何人都可以幫忙嗎? 形式爲:如何使此JavaScript代碼在Opera中工作

<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); 
    } 
} 
+0

我沒有測試這一點,但你可以試試這個:'newentry.style.height = '20px的';'追加'textarea'之前細胞。 – Teemu 2012-04-19 10:15:44

+0

感謝您的建議,但它沒有奏效...... :( – nubicurio 2012-04-19 10:20:07

+1

)如果您在Opera中運行代碼後檢查表格,它是否包含新行,單元格和textarea?(您可以使用Dragonfly) – 2012-04-19 10:23:05

回答

1

此行:newentry.type = "text";在Opera中導致異常:Uncaught exception: DOMException: NO_MODIFICATION_ALLOWED_ERR。無論如何(至少在Chrome中)線路什麼也不做,所以我想你可以刪除它。

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

-> textarea

+0

非常感謝你@kapsi!一切正常,如預期:) – nubicurio 2012-04-19 11:50:46

0

使用本地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); 
} 

我沒有測試上面的代碼,但它會幫助你到達那裏。

+0

Hi Epuri,謝謝你的建議。仍然是JavaScript的新手。你介意告訴我我是怎麼合​​作的嗎?使用.createElement創建行和單元格? – nubicurio 2012-04-19 10:21:45

2

設置newentry.type

Uncaught exception: DOMException: NO_MODIFICATION_ALLOWED_ERR

其實,有沒有鍵入textareahttp://www.w3schools.com/tags/tag_textarea.asp屬性。如果您使用input,則需要該類型。

如果您刪除線條設置類型,它的效果很好。

我也發現了代碼中的另一個錯誤:您不關閉第二行,而是打開一個新行。

這是好的代碼:

<tr>
<td><textarea name = "job[]"></textarea></td>
<td><textarea name = "comment[]"></textarea></td>
</tr>

+0

謝謝!卡普西建議相同的解決方案:) – nubicurio 2012-04-19 11:52:44