|
|
|
|
|
для: DJ Paltus
(28.04.2009 в 12:04)
| | Не слушайте никого, особоенно первого прокомментировавшего, он краб походу полный.
вот Вам функция
<script type="text/javascript">
/* -------------------------- */
/* XMLHTTPRequest Enable */
/* -------------------------- */
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == 'Microsoft Internet Explorer'){
request_type = new ActiveXObject('Microsoft.XMLHTTP');
} else {
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
/* -------------------------- */
/* SEARCH */
/* -------------------------- */
function searchNameq() {
var nocache = Math.random();
http.open('get', ' part_d1.html?nocache = '+nocache);
http.onreadystatechange = searchNameqReply();
http.send(null);
}
function searchNameqReply() {
if(http.readyState == 4){
var response = http.responseText;
$("#d1").html(response); // или через стандартную ява ф-цию document.getElementByid('d1').innerHTML=response;
}
}
</script>
|
по онклику вызываете searchNameq();
должена быть установлена jquery.js | |
|
|
|
|
|
|
|
для: PAT
(29.04.2009 в 15:27)
| | По назначению имени и id - это ибо ФФ не все равно, что использовать - что id, что name. Ошибка: window.frames.hf is undefined говорит. Наверное, есть метод обращения и для ФФ, но я им не владею, сами понимаете.
ИЕ дейсвительно, позволяет такую фривольность. Просто у меня основной браузер именно ФФ.
А по второму вопросу - каюсь, я просто не владею основами языка, поэтому пишу как на тракторе пашу. | |
|
|
|
|
|
|
|
для: DJ Paltus
(29.04.2009 в 15:06)
| | Ясно. Соображений, значится, не было. Была путаница.
Итак, к ифрейму обращаетесь дважды:
Первый раз, как к объекту текущего окна, чтобы изменить его src.
Обращаетесь посредством метода
window.document.getElementById ()
| , т.е. именно id у ифрейма вам необходим.
Второй раз обращаетесь не к ифрейму, а к окну в этом ифрейме.
Обращаетесь, используя коллекцию , для которой нет никакой разницы - что использовать - что id, что name.
Раз id у ифрейма уже имеется, то, исходя из "принципа разумной достаточности", совершенно незачем давать ещё и name.
----------------------------------------------------
Продолжаем разбор полётов.
Вопрос второй.
В двух вами написанных функциях вы вводите две переменные:
myname = 'reg_dj_paltus_'+x+'.html';
и
intext=window.frames.hf.document.body.innerHTML;
| которые используете только внутри этих функций.
Почему тогда эти переменные у вас глобальные? | |
|
|
|
|
|
|
|
для: PAT
(29.04.2009 в 14:57)
| | А. Это появилась путаница, когда я не сумел обратиться к iframe по id за innerHTMLом и стал обращаться по name и через window. ((
— Я два раза не повторяю. Понятно? Два раза не повторяю! | |
|
|
|
|
|
|
|
для: DJ Paltus
(29.04.2009 в 14:02)
| | Разбор полётов.
Вопрос ПЕРВЫЙ
<iframe style="display:none" id="hf" name="hf" onLoad="further();"></iframe>
|
Объясните ваши соображения, когда вы ифрейму дали имя и отчество ОДИНАКОВЫЕ.
Т.е. он не Василий Иванович у вас, а Василий Василий.
Анекдот в тему:
- Пристегните ремни. Наш самолет сейчас совершит посадку в аэропорту Баден-Бадена.
- Ты чё, тёлка, по два раза повторяешь? Тут же не лохи летят! | |
|
|
|
|
|
|
|
для: PAT
(29.04.2009 в 13:45)
| | ну, а насчет body - так не вызывает же его отсутствие в файлах с данными ошибки, а? Или есть неведомая мне причина содержать подгружаемые данные в настоящем html-формате? | |
|
|
|
|
 1.1 Кб |
|
|
для: PAT
(29.04.2009 в 13:45)
| | АААА!
Я уже все сделал.
Только форум не грузился, фиг чего докажешь.
Вот, в аттаче - работает. Я сам, сам я. Не ругай, дядя РАТ! | |
|
|
|
|
|
|
|
для: DJ Paltus
(29.04.2009 в 11:52)
| | Мда...
А вы ничегошеньки не поняли.
Поясняю ИШШО раз.
На конкретном жизненном примере.
Положим, познакомились вы с самой симпатичной девушкой этой планеты.
И полюбили её.
И захотели иметь с ней совместных детей.
И, положим, добились вы от неё взаимности в этом своём желании.
Спрашивается - вы вручите этой девушке коляску, пелёнки, распашонки и соску с молоком СРАЗУ ЖЕ после вашего любовного контакта?
Или всё же погодите приблизительно месяцев девять (сорок недель)?
Видимо, всё же подождёте.
Ибо с первого разу ребёнок может и не родиться... так ведь? :-)
Так и здесь.
По событию ONCHANGE тега <select> вы загружаете в ифрейм некий файл.
Вы знаете - КОГДА он полностью загрузится, чтобы можно было его прочитать?
Нет, не знаете.
Но "соску с молоком" суёте сразу - т.е. СРАЗУ ЖЕ читаете содержимое документа, который находится в этом ифрейме.
Выше я приводил пример, где на тег <IFRAME> повешен обработчик ONLOAD.
Вы вроде бы это пример изучали и даже пытались его переделать - читать вместо document.body хотели window.
Так почему ТЕПЕРЬ у вас ВОВСЕ НЕТ никакой инструкции на теге <IFRAME>?
Он у вас теперь "рожает" сразу, как только "засунете"? (извиняюсь за ненорматив).
Окончательно.
Должно быть 3 (ТРИ) функции.
ПЕРВАЯ - "висит" на событии ONCHANGE на первом списке. Загружает в <IFRAME> нужный URL согласно выбору опшена.
ВТОРАЯ - "висит" на событии ONLOAD ифрейма. Читает ПОЛНОСТЬЮ ЗАГРУЗИВШИЙСЯ в ифрейм документ. И вызывает третью функцию, передав ей полученную строку.
ТРЕТЬЯ - из полученной строки переформировывает список с городами. Эта функция у вас есть - переделывать её не надо.
Ну что, попробуете ещё раз? :-)
PS. Читаете вы в ифрейме document.body.innerHTML, так?
И где, спрашивается, у вас теги <body></body> в приложенных вами двух файлах? :-))
PS2. Событие ONLOAD сработает у вас и при вовсе неуказанном значении SRC ифрейма. Как с этим бороться - я выше писал (см. на "флаг" - переменную P = false) | |
|
|
|
|
 1.1 Кб |
|
|
для: PAT
(29.04.2009 в 09:07)
| | Знач, так.
Всё работает, но работает неправильно.
Почему-то из iframe считывается предыдущее содержимое, а не текущее. И это меня немало тревожит, даже кушать не могу. Вот код (для дебага iframe видимый и добавлен div, отображающий по идее то, что считалось из iframe).
Что не так?
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
function get_some(x){
if (x!=='blank')
{
myname = 'reg_dj_paltus_'+x+'.html';
document.getElementById('hf').src=myname;
intext=window.frames.hf.document.body.innerHTML;
document.getElementById('debug').innerHTML=intext;
formSecSel(intext);
}
else {document.getElementById ('scnd').style.display = 'none'};
}
function formSecSel (x)
{
for (var q = document.getElementById ('scnd'), j = q.options.length - 1; j >= 0; j--) q.options [j] = null;
for (var s = x.split ('|'), j = 0; j < s.length; j++)
{
var o = document.createElement ('option'); var t = s [j].split ('=');
o.value = unescape (t [0]); o.text = unescape (t [1]); q.options.add (o);
}
q.style.display = 'inline';
}
</script>
</head>
<body>
<iframe style="display:block" id="hf" name="hf"></iframe>
<select style="width: 234px" onchange="get_some (this.value)">
<option style="color: red" value="blank">Select a region
<option value="mos">Moscovskaja oblast'
<option value="len">Leningradskaja oblast'
</select>
<div id=debug>Ы?</div>
<select id="scnd" style="display:none; width: 123px"></select>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: DJ Paltus
(29.04.2009 в 02:50)
| | >"Главное, чтобы начальство этого не видело"
Это - по-нашему, по-совковому...
Говорить о ДОМАШНЕМ задание, которое ИЗНАЧАЛЬНО планируется делать НА РАБОТЕ:-)
Потому иностранцы и не могут понять русского человека :-) | |
|
|
|
|