Javascript Объектная ориентация + DOM? - PullRequest
1 голос
/ 07 сентября 2010

Я использую несколько элементов управления ASCX на одной странице, и JavaScript явно конфликтует, если я использую два одинаковых элемента управления. Поэтому я изменил все это на надлежащий ООП-javascript, чтобы они не мешали, но теперь моя проблема заключается в том, как мне поступить с HTML. Оба ASCX сделают div под названием "foo". Так как обычно обходится? Должен ли я также генерировать все html из моих классов JS?

Спасибо:)

Ответы [ 2 ]

1 голос
/ 07 сентября 2010

Вы можете добавить runat="server" к своим DIV, чтобы сделать их серверными элементами управления:

<div id="foo" runat="server"> ... </div>

, а затем использовать ClientID (сгенерированный) элемента управления:

<script>
  var divId = "<%= foo.ClientID %>";
</script>
1 голос
/ 07 сентября 2010

Поместите их в свои собственные «контейнеры»: 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>
...

Затем вы можете манипулировать ими, сначала перейдя к DIV с уникальным именем, затем выполнив поиск элементов с классомfoo.

Для доступа к ним в Javascript вы можете использовать что-то вроде:

var c1 = document.getElementById("control1").getElementsByClassName('foo')[0];
var c2 = document.getElementById("control2").getElementsByClassName('foo')[0];

Убедитесь, что используете [0] для каждого, потому что getElementsByClassName возвращает массив элементов,Вам (вероятно) нужен только один элемент (не объект массива).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...