簡體   English   中英

mootools:new Element()-在IE中不起作用

[英]mootools: new Element() - won't work in IE

我正在嘗試創建一堆元素並將其插入表中。 在FF和Chrome中,我的代碼工作正常,但是在IE中,當我按“插入行”按鈕時什么也沒發生。 沒有錯誤或其他任何內容:\\

我已將代碼簡化為一個簡單的示例,以嘗試查找我在做什么錯。

function insert_row(){
    //get table element
    var filterTable = $('table_search_filter');

    //create new objects
    var tr = new Element('tr');
    var td1 = new Element('td');
    var td2 = new Element('td');        
    var td3 = new Element('td');
    var select_project = new Element('select', {'id':'select_secondary_' + filterCounter});


    //add elements to table
    td2.grab(select_project);
    tr.grab(td1);   
    tr.grab(td2);   
    tr.grab(td3); 
    filterTable.grab(tr);
}

當我寫出tr元素innerHTML時,在FF和IE中會得到不同的結果:

FF- <td></td><td><select id="select_secondary_0"></select></td><td></td>

IE- <TD></TD><TD><SELECT id=select_secondary_0></SELECT></TD><TD></TD>

因此,看起來IE處理方式有所不同。 首先,標簽是大寫的,這不好。 其次,我的身份證沒有'字符。 為什么? 漫長的一天,我現在真的很困惑:\\

我記得有一個版本的IE,如果您的表中沒有tbody / thead元素,則不會動態創建表元素。

這可能是mootools中的錯誤。 在使用它之后,我能夠生成一個可以正常工作的腳本-注意,我只是在表中添加了一個tbody標記,並將id屬性放置在該表而不是表上。 該代碼現在可以按預期工作。 這本身不是“答案”,但對您來說可能是可行的解決方法。

JSFiddle: http : //jsfiddle.net/Brvyn/

<script type="text/javascript">
function insertRow() {
    //get table element
    var filterTable = $('table_search_filter');

    //create new objects
    var tr = new Element('tr');
    var td1 = new Element('td');
    td1.innerHTML = "first column";
    var td2 = new Element('td');      
    var td3 = new Element('td');
    td3.innerHTML = "third column";
    var select_project = new Element('select', {'id':'select_secondary'});


    //add elements to table
    select_project.inject(td2);
    td1.inject(tr);   
    td2.inject(tr);   
    td3.inject(tr); 
    tr.inject(filterTable);
    return false;

}
</script>

<a href="#" onclick="return insertRow();">Fire</a>

<br /> Table:

<table>
    <tbody id="table_search_filter"></tbody>    
</table>

在相關說明中,我們剛剛調試了使用Mootools v1.1的腳本(不要問)-IE9似乎存在以下語法問題:

var select_project = new Element('select', {'id':'select_secondary'});

但是這樣重寫:

var select_project = new Element('select');
select_project.setAttribute('id', 'select_secondary');

...效果很好。 不知道為什么會這樣-但我認為這種觀察對某人可能有用。

PS我猜這個錯誤可能已在更高版本的Mootools中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM