Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не срабатывает getElementById (https://javascript.ru/forum/events/19148-ne-srabatyvaet-getelementbyid.html)

bFree 27.07.2011 15:14

Не срабатывает getElementById
 
Здравствуйте!
Ситуация такая: кусок страницы подгружается через AJAX. После подгрузки не работает обращение к элементу через getElementById
Например, в страницу подгружается такой код:

Код:

<textarea id="some_id"></textarea>

<script type="text/javascript">
getElementById('some_id').value = '123'; // не работает
</script>

То есть, как будто браузер не регистрирует новые элементы, которые подгрузились. Как можно исправить? window.onload = function(){} не помогает :(

melky 27.07.2011 15:15

document.getElementById, а не window.getElementById

bFree 27.07.2011 15:18

Нет, не помогает.
В моем частном случае я подключаю скрипт edit_area к textarea
То есть, получается вообще так:

Код:

editAreaLoader.init({
        id: "widget_code"        // id of the textarea to transform
        ,start_highlight: true        // if start with highlight
        ,allow_resize: "both"
        ,allow_toggle: true
        ,word_wrap: true
        ,language: "ru"
        ,syntax: "php"
});

Но и вручную document.getElementById не работает :(

melky 27.07.2011 15:20

вот ответ тебе на твой вопрос. какие скрипты ты используешь, я не знаю

<textarea id="some_id"></textarea>

<script type="text/javascript">
document.getElementById('some_id').value = '123'; 
</script>

bFree 27.07.2011 15:21

Дак написал же: твой код тоже не работает :)

melky 27.07.2011 15:25

не работает в чём ?

только что проверил : chrome 12 ok, ie 7 ok, firefox 5 ok

bFree 27.07.2011 15:26

Везде не работает (
говорю же: это подгружается ajax'ом в уже готовую страницу.
Что интересно, если написать так:
Код:

<textarea id="some_id" onclick="document.getElementById('some_id').value = '123'; "></textarea>
то все работает

melky 27.07.2011 15:32

так и сказал бы и не парил мозг. исполняй скрипты с загруженной страницы вручную

bFree 27.07.2011 15:38

Цитата:

исполняй скрипты с загруженной страницы вручную
поясни, если не сложно

melky 27.07.2011 16:21

Цитата:

Сообщение от bFree (Сообщение 115660)
поясни, если не сложно

пример из Prototype.js

var st = String.prototype;  

st.extractScripts = function() {
    var matchAll = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'img'),
        matchOne = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'im');
    return (this.match(matchAll) || []).map(function(scriptTag) {
      return (scriptTag.match(matchOne) || ['', ''])[1];
    });
  }
 st.evalScripts = function() {
    return this.extractScripts().map(function(script) { return eval(script) });
  }

"<br> html tags <script>alert('evalled!!!')</script> ololo".evalScripts()


Часовой пояс GMT +3, время: 09:49.