0

我正在将一个 div 插入到另一个 div 中,我确实在这篇文章的帮助下完成了 Inserting a Div Into another Div? . 这是我的代码,它工作正常。这个函数被一个元素调用

<asp:LinkButton ID="LinkButton1" OnClientClick="generateDiv(); return false;
"runat="server" 
Text="Create New Group" CausesValidation="False"></asp:LinkButton>

function generateDiv() {
          var grup = document.createElement('div');
          grup.setAttribute('class', 'genDiv');
          grup.setAttribute('id', 'genId');
          this.grp.appendChild(grup);
   }

有什么区别:

document.getElementById("#grp").appendChild(grup)

this.grp.appendChild(grup); 
4

2 回答 2

1

有什么区别:

document.getElementById("#grp").appendChild(grup).

this.grp.appendChild(grup);

好吧,第一个会失败,因为你没有任何带有 的元素id "#grp"(你不使用#,那是“下一个东西是一个id”的 CSS 表达式)。使用document.getElementById,您不要输入,#因为它只是期望一个id,而不是 CSS 选择器,所以:

document.getElementById("grp").appendChild(grup);

关于thisthis将由如何generateDiv调用来决定。如果它在 上作为事件处理程序调用grp div,那么this(可能)已经引用了该grp元素,您不必再次查找它。如果它被称为其他方式,那么this可能是其他方式,您需要查找grp divvia getElementById

编辑:从您稍后发布的代码中:

<asp:LinkButton ID="LinkButton1" OnClientClick="generateDiv(); return false;" runat="server" Text="Create New Group" CausesValidation="False"></asp:LinkButton>

...generateDivthis被视为全局对象,因此您必须使用document.getElementById.


旁注:您可以并且应该将反射属性用于classid属性:

function generateDiv() {
     var grup = document.createElement('div');
     grup.className = 'genDiv';
     grup.id = 'genId';
     document.getElementById("grp").appendChild(grup);
}

...尤其是因为 IE8(我认为可能是 IE7)及以下class如果您使用setAttribute.

于 2013-04-30T07:06:40.930 回答
-1

html

<div id="box"></div>

js

var e = $('<div></div>');
$('#box').append(e); 
于 2013-04-30T07:07:27.077 回答