使用YUI将tr附加到tbody

时间:2010-09-14 15:56:40

标签: javascript dom yui

我知道这可以使用jQuery轻松完成,但无法找到如何使用YUI 2完成它。

我通过AJAX提交表单,在回调中,成功之后,我想添加插入到DOM中现有表中的信息。

这是我正在尝试但没有成功:

var callback = {
    success: function(o) {
        var result = YAHOO.lang.JSON.parse(o.responseText);
        if (result.success == true) {
            var last_row = YAHOO.util.Dom.getLastChild('tbody_urls');

            var html = '<tr><th>' + result.name 
                + '</th><td><a href="' + result.url + '" title="' + result.url + '">' + result.url.substr(0, 80) + '</a></td><td></td><td></td></tr>';

            var el = YAHOO.util.Dom.insertAfter(html, last_row); // el is being set to NULL so the insert is failing

            YAHOO.util.Dom.get('form_urls').reset();
        }
    },
    failure: function(o) { error(); }
};

2 个答案:

答案 0 :(得分:1)

您不能在节点后插入html字符串。尝试创建一个row元素,在其中插入html并追加row元素:

var callback = {
    success: function(o) {
        var result = YAHOO.lang.JSON.parse(o.responseText);
        if (result.success == true) {
            var last_row = YAHOO.util.Dom.getLastChild('tbody_urls');

            var html = '<th>' + result.name 
                + '</th><td><a href="' + result.url + '" title="' + result.url + '">' + result.url.substr(0, 80) + '</a></td><td></td><td></td>';
            var row=document.createElement("tr");
            row.innerHTML=html;

            var el = YAHOO.util.Dom.insertAfter(row, last_row); // el is being set to NULL so the insert is failing

            YAHOO.util.Dom.get('form_urls').reset();
        }
    },
    failure: function(o) { error(); }
};

<强>更新 为每个td和th

创建一个dom元素
var callback = {
    success: function(o) {
        var result = YAHOO.lang.JSON.parse(o.responseText);
        if (result.success == true) {
            var last_row = YAHOO.util.Dom.getLastChild('tbody_urls');

            var row=document.createElement("tr");
            var th=document.createElement("th");
            th.innerHTML=result.name;
            row.appendChild(th);
            var td=document.createElement("td");
            td.innerHTML='<a href="' + result.url + '" title="' + result.url + '">';
            row.appendChild(td);
            row.appendChild(document.createElement("td"));
            row.appendChild(document.createElement("td"));

            var el = YAHOO.util.Dom.insertAfter(row, last_row); // el is being set to NULL so the insert is failing

            YAHOO.util.Dom.get('form_urls').reset();
        }
    },
    failure: function(o) { error(); }
};

答案 1 :(得分:0)

最好使用appendChild,因为如果没有现有的tr,insertAfter将无效。

<snip>
var tbody = YAHOO.util.Dom.get('tbody_urls');
tbody.appendChild(row);