Вход

Просмотр полной версии : Не срабатывает getElementById


bFree
27.07.2011, 15:14
Здравствуйте!
Ситуация такая: кусок страницы подгружается через 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
поясни, если не сложно

пример из 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()