Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2012, 14:58
Новичок на форуме
Отправить личное сообщение для boomrest Посмотреть профиль Найти все сообщения от boomrest
 
Регистрация: 07.02.2012
Сообщений: 7

Как обратиться к элементу созданному в результате ajax-запроса?
В результате ajax запроса поверх основного контента появляется div с текстовыми select который должно вставляться текущее время. Значение времени формируется во внешнем .js скрипте и по document.getElementById('time').value = "Время" должно отобразиться в селекте.
Подскажите плиз, почему этого не происходит. И вообще почему в результирующем Диве не выполняются скрипты. Я нуб
Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2012, 15:32
Аватар для RazZzeR
Кандидат Javascript-наук
Отправить личное сообщение для RazZzeR Посмотреть профиль Найти все сообщения от RazZzeR
 
Регистрация: 11.12.2011
Сообщений: 146

давай все поподробней, я недопонял тебя
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2012, 17:52
Новичок на форуме
Отправить личное сообщение для Delovoy Посмотреть профиль Найти все сообщения от Delovoy
 
Регистрация: 13.01.2011
Сообщений: 9

у меня похожая ситуация, может немного проще:

В результате ajax запроса динамически формируется блок html
(фактически добавляется кнопка) + js функция, которая должна вызываться при нажатии этой кнопки


<script type="text/javascript">
    function send1(){
        alert ("Отправка!");
    }
</script>


<div class="default_button_block">
            <button class="default_button" type="button" onclick="send1()">Подтвердить</button>
        </div>


при нажатии на копку ничего не происходит
я просто проверил, вставил этот кусок кода в другую страницу - все срабатывает

думаю, это потому что эти элементы были сформированы динамически и если посмотреть, то в исходном коде страницы их не видно

Последний раз редактировалось Delovoy, 13.02.2012 в 17:58.
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2012, 22:01
Новичок на форуме
Отправить личное сообщение для boomrest Посмотреть профиль Найти все сообщения от boomrest
 
Регистрация: 07.02.2012
Сообщений: 7

Сообщение от Delovoy Посмотреть сообщение
у меня похожая ситуация, может немного проще:
Спасибо Delovoy, именно такая проблема. Даже alert не срабатывает, если его включить в динамически созданный html
Почему так?
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2012, 22:36
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Цитата:
(фактически добавляется кнопка) + js функция, которая должна вызываться при нажатии этой кнопки
Да есть такое, вообще JS лучше подключать весь и сразу мне так кажется. А почему не срабатывает хз, я например в JQ явно пишу результат json, html а JS там нет и браузер сам его выполнять не будет по моему так... Разве что eval какой нибудь поможет

да и тем более зачем его все время передавать, лучше один раз загрузить и пусть себе кешируется, чем постоянно делать запросы на сервер и передавать один и тот же скрипт

Последний раз редактировалось Sergey999, 13.02.2012 в 22:38.
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2012, 23:13
Новичок на форуме
Отправить личное сообщение для boomrest Посмотреть профиль Найти все сообщения от boomrest
 
Регистрация: 07.02.2012
Сообщений: 7

Сообщение от Sergey999
я например в JQ явно пишу результат json, html а JS там нет и браузер сам его выполнять не будет по моему так...
Как это так? json основан на javascript, а jquery - это библиотека js
Сообщение от Sergey999
да и тем более зачем его все время передавать, лучше один раз загрузить и пусть себе кешируется, чем постоянно делать запросы на сервер и передавать один и тот же скрипт
Ситуация такая:
На главной странице есть ссылка, по нажатии которой динамически формируется html код:
<input type="text" id="pole" />

Так вот. Если мне нужно с помощью js изменить значения поля input, то у меня ничего не выйдет:
document.getElementById('pole').value = "Привет Мир!!!";

Причем не важно откуда я обращаюсь к полю: из основной страницы или из динамически созданной. Результат один - никакого.
Почему так?

Последний раз редактировалось boomrest, 13.02.2012 в 23:15.
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2012, 23:22
Аспирант
Отправить личное сообщение для Sergey999 Посмотреть профиль Найти все сообщения от Sergey999
 
Регистрация: 25.12.2011
Сообщений: 75

Цитата:
Как это так? json основан на javascript, а jquery - это библиотека js
при отправке запроса можно явно указать какой результат ты хочешь получить json, html и т.п., если я указываю json например - почему я буду ждать что браузер например будет считать его JS скриптом? Я про это говорю, хотя тут лучше кто нибудь расскажет я думаю

Цитата:
Причем не важно откуда я обращаюсь к полю: из основной страницы или из динамически созданной. Результат один - никакого.
Почему так?
С основной страницы должен меняться без проблем, значит ошибка где-то еще, в событиях и т.п., если на странице появился нужный html, как вы после этого пытаетесь с ним работать? Точно он есть на этот момент? Что говорит консоль ошибок когда вы нажимаете на кнопку и тот самый input должен меняться?
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2012, 11:08
Новичок на форуме
Отправить личное сообщение для boomrest Посмотреть профиль Найти все сообщения от boomrest
 
Регистрация: 07.02.2012
Сообщений: 7

Пример скрипта
А суть то где...
Файл ajax.js
function showContent(link,contentBody) {  
            var cont = document.getElementById(contentBody);  
            var loading = document.getElementById('loading');  
      
            var http = createRequestObject();
            if( http )   
            {  
                http.open('get', link);  
                http.onreadystatechange = function ()
                {  
                    if(http.readyState == 4)
                    {  
                        cont.style.display='block';
                        cont.innerHTML = http.responseText;
                    }  
                }  
                http.send(null);      
            }  
            else   
            {  
                document.location = link;  
            }  
        }  
      
        // создание ajax объекта  
        function createRequestObject()
        {  
            try { return new XMLHttpRequest() }  
            catch(e)   
            {  
                try { return new ActiveXObject('Msxml2.XMLHTTP') }  
                catch(e)   
                {  
                    try { return new ActiveXObject('Microsoft.XMLHTTP') }  
                    catch(e) { return null; }  
                }  
            }  
        }


Файл zapis.php

Время записи: <input type="text" id="date1" size="10" maxlength="10" /> <input type="text" id="time1" size="5" maxlength="5" />



Файл index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<style>
#zapis {
  width: 270px;
  height: 40px;
  top: 100px;
  left: 200px;
  margin: 0px auto;
  padding: 15px 0px 0px 30px;
  border:1px solid #FF9966;
  background: #CCFFCC;
  position: absolute;
  display: none;
  z-index: 100;
}
</style>
<script type="text/javascript" src="ajax.js"></script>
<script>
function dateTime() {
    document.getElementById('date1').value = '14-02-2012';
    document.getElementById('time1').value = '10:07';
}
</script>
</head>

<body>
<div id="block_box"></div>
<div id="add">
<h1>Добавление записи</h1>

<!-- По событию onChange в <div id="zapis"></div> выводится результат скрипта zapis.php -->
<select name='var1' onChange="showContent('zapis.php','zapis'), dateTime()">
  <option value='1' selected>Вариант 1</option>
  <option value='2' selected>Вариант 2</option>
  <option value='3' selected>Вариант 3</option>
</select>
  <div id="zapis"></div> <!-- ...вот сюда -->
  <div id="loading" style="display: none">Загрузка...</div>
</div>

</body>
</html>


Для записи значения даты и времени в input id="date1" и id="time1" (файл zapis.php) нужно вызвать функцию js dateTime() (файл index.php). Но как это сделать? Понятно, что пока не сработает событие onChenge для списка, инпутов ещё не существует и обращение к ним вызовет ошибку. Если вставить вызов функции dateTime() в onChange() - да, работает, но только до того момента, пока не пропал фокус с выбранного элемента списка. Т.е. сразу же надпись пропадает.
Пробовал вызов нужной функции засунуть в onLoad файла zapis.php, т.е. <body onLoad='dateTeme()'> - не работает.
Как мне обратиться по id к элементу, созданному в результате ajax запроса? Не может быть, что нет выхода.
Картинка для наглядности:
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните как вызывается ajax скрипт AddressBook из формы prog90 AJAX и COMET 3 06.06.2009 16:12
Как "подождать" выполнение асинхронного запроса? WalterScott AJAX и COMET 25 05.06.2009 12:18
обратиться к элементу формы, заданному переменной Andrej_2 Элементы интерфейса 4 15.05.2009 09:18
Добавление стилей к вновь созданному элементу alexeews Общие вопросы Javascript 4 29.09.2008 01:40
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54