Javascript面向对象+;多姆?

Javascript面向对象+;多姆?,javascript,asp.net,oop,Javascript,Asp.net,Oop,我在一个页面上使用多个ASCX控件,如果我使用两个相同的控件,javascript显然会发生冲突。所以我把它全部改成了正确的OOP javascript,这样它们就不会干扰,但我现在的问题是如何处理HTML方面的事情。两个ASCX都将制作一个名为“foo”的div。那么通常的做法是什么呢?我是否也要从JS类内部生成所有html 谢谢:)将它们放入自己的“容器”:具有唯一ID的div,例如: ... <div id="control1"> ... <!-- Control One

我在一个页面上使用多个ASCX控件,如果我使用两个相同的控件,javascript显然会发生冲突。所以我把它全部改成了正确的OOP javascript,这样它们就不会干扰,但我现在的问题是如何处理HTML方面的事情。两个ASCX都将制作一个名为“foo”的div。那么通常的做法是什么呢?我是否也要从JS类内部生成所有html

谢谢:)

将它们放入自己的“容器”:具有唯一ID的div,例如:

...
<div id="control1">
...
<!-- Control One goes here -->
<div class="foo">...</div>
...
</div>
...

<div id="control2">
...
<!-- Control Two goes here -->
<div class="foo">...</div>
...
</div>
...
确保对每个元素使用
[0]
,因为
getElementsByClassName
返回一个元素数组。您(可能)只需要一个元素(不是数组对象)。

您可以向div添加
runat=“server”
,使其成为服务器端控件:

<div id="foo" runat="server"> ... </div>
。。。
然后使用控件的(生成的)ClientID:

<script>
  var divId = "<%= foo.ClientID %>";
</script>

var divId=“”;

是否有类似parentObj.getChildOf(foo的id)的函数?或者它是如何工作的?该死,我真的不能把代码剪贴贴贴在窗户上。基本上,您需要在Javascript中使用DOM遍历方法。但是,我喜欢使用jQuery(jQuery.org)来实现这一点,因此:$(“#control1.foo”)将返回类为“foo”的div,它是ID为“control1”的div的子级。哦,好的,太好了!在这种情况下,我更容易实现M4N的答案,但您的答案在将来会有很大帮助,谢谢。Sweet,效果很好:)。还有一件事,每个控件都有“var thisObj=new myObject();”,这显然也会消失。有没有一种方法可以做类似的事情呢?我没有通过控件直接控制页面,只有控件本身。谢谢@马特:我想这取决于你到底想做什么。一种可能的解决方案(基于jquery)可能是这样的:
$(“#”)slideOut()
(如果要调用jquery方法)或
someMethod($(“#”)
作为替代方法。更好的解释是:每个控件将在pageload上使用其所有代码初始化函数(类)。但是如果两个页面都说var thisObj=newmyobject();当一个页面调用thisObj时,则有两个页面。在上面的示例中,您似乎附加了callSomeMethod();到DOM对象?如果是这样,我可以要$(“#”)myObject.callSomeMethod();或者类似的。希望我说的有道理:-/@Matt:对不起,我注意到了我在评论中的错误,似乎我在你写评论的同时也改正了。
<script>
  var divId = "<%= foo.ClientID %>";
</script>