Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2012, 13:22
Интересующийся
Отправить личное сообщение для arkada38 Посмотреть профиль Найти все сообщения от arkada38
 
Регистрация: 09.10.2012
Сообщений: 23

Генерация ссылки в iframe
Добрый день. Не первый день бьюсь со следующей задачей. Хочется сделать web-приложение, в котором можно получить желаемый текст, указав несколько переменных. Выбор переменных удалось сделать через ползунки (range), сумма этих переменных дает номер желаемого абзаца в тексте. Дальше пройти не получается.
Подскажите, пожалуйста, как, получив u, открыть страницу data.htm#u в iframe?
<form onsubmit="return false"
      oninput="u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)">
 
      <input type="range" name="l" value="500" min="100" max="500" step="100">
      <input type="range" name="m" value="50" min="10" max="50" step="10">
      <input type="range" name="n" value="5" min="1" max="5" step="1">
 
   <p><output name="u"></output>
 
   <p><iframe src="data.htm#u" ></iframe>
</form>

Заранее спасибо.

Последний раз редактировалось arkada38, 09.10.2012 в 14:43.
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2012, 14:55
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

если фрейм на странице один, то :

document.frames[0].src = "data.htm#" + u;
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2012, 15:17
Интересующийся
Отправить личное сообщение для arkada38 Посмотреть профиль Найти все сообщения от arkada38
 
Регистрация: 09.10.2012
Сообщений: 23

Да, фрейм всего один. А что с этой строчкой делать?
<form onsubmit="return false"
      oninput="u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)">
 
      <input type="range" name="l" value="500" min="100" max="500" step="100">
      <input type="range" name="m" value="50" min="10" max="50" step="10">
      <input type="range" name="n" value="5" min="1" max="5" step="1">
 
   <p><output name="u"></output>

<script>
document.frames[0].src = "data.htm#" + u;
</script>
 
   <p><iframe src="data.htm#" + u ></iframe>
</form>
Не правильно ведь, как я вставляю
Плюс символ # стирается и в ссылке не отображается
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2012, 15:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от arkada38
Да, фрейм всего один. А что с этой строчкой делать?
исполнять, когда понадобится - при клике на кнопку, или при отсылке формы, анпример.

в u (или можно изменить имя переменной) записать номер желаемого абзатца.
Ответить с цитированием
  #5 (permalink)  
Старый 09.10.2012, 16:12
Интересующийся
Отправить личное сообщение для arkada38 Посмотреть профиль Найти все сообщения от arkada38
 
Регистрация: 09.10.2012
Сообщений: 23

Сообщение от melky Посмотреть сообщение
исполнять, когда понадобится - при клике на кнопку, или при отсылке формы, анпример.

в u (или можно изменить имя переменной) записать номер желаемого абзатца.
Я хочу чтобы исполнялось на oninput
<form onsubmit="return false"
      oninput="u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)">

Каким образом это должно выглядеть, чтобы работало?
Куда вставить document.frames[0].src = "data.htm#" + u; ?
Как src в iframe этому будет равен?
Ответить с цитированием
  #6 (permalink)  
Старый 09.10.2012, 16:40
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

как-то так :

<form onsubmit="return false"
      oninput="document.frames[0].src = 'data#' + (u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)) ">
Ответить с цитированием
  #7 (permalink)  
Старый 09.10.2012, 17:19
Интересующийся
Отправить личное сообщение для arkada38 Посмотреть профиль Найти все сообщения от arkada38
 
Регистрация: 09.10.2012
Сообщений: 23

Спасибо за старания, но это даже output name="u" убивает
Ответить с цитированием
  #8 (permalink)  
Старый 09.10.2012, 18:13
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от arkada38 Посмотреть сообщение
Спасибо за старания, но это даже output name="u" убивает
упс ... да, конечно - меня глюкнуло в document.frames

фрейм нужно пометить каким-нибудь ID

<iframe *!*id="myframe"*/!* src="data.htm#" + u ></iframe>


и в oninput код поменять:

<form onsubmit="return false"
      oninput="*!*document.getElementById('myframe')*/!*.src = 'data#' + (u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)) ">
Ответить с цитированием
  #9 (permalink)  
Старый 09.10.2012, 18:36
Интересующийся
Отправить личное сообщение для arkada38 Посмотреть профиль Найти все сообщения от arkada38
 
Регистрация: 09.10.2012
Сообщений: 23

Успехи уже на лицо. Разве что при изменении положения ползунков почему-то не обновляется iframe, даже если oninput на onchange менять.
iframe просто переводит на /data.htm, при этом символ # стирается.
<form onsubmit="return false"
      oninput="document.getElementById('myframe').src = 'data.htm#' + (u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value))">
 
      <input type="range" name="l" value="500" min="100" max="500" step="100">
      <input type="range" name="m" value="50" min="10" max="50" step="10">
      <input type="range" name="n" value="5" min="1" max="5" step="1">
 
   <p><output name="u"></output>
 
   <p><iframe id="myframe" src="data.htm#" + u ></iframe>

</form>

Можно переписать на src= u + ".htm". Тогда придется много html страниц сделать вместо одного файла с множеством абзацев. Но смена положения ползунков не дает результата

Последний раз редактировалось arkada38, 09.10.2012 в 18:39.
Ответить с цитированием
  #10 (permalink)  
Старый 09.10.2012, 18:46
Интересующийся
Отправить личное сообщение для arkada38 Посмотреть профиль Найти все сообщения от arkada38
 
Регистрация: 09.10.2012
Сообщений: 23

А вот так работает и даже без src в iframe
<form onsubmit="return false"
      oninput="document.getElementById('myframe').src = (u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)) + '.htm'">
 
      <input type="range" name="l" value="500" min="100" max="500" step="100">
      <input type="range" name="m" value="50" min="10" max="50" step="10">
      <input type="range" name="n" value="5" min="1" max="5" step="1">
 
   <p><output name="u"></output>
 
   <p><iframe id="myframe"></iframe>

</form>

Спасибо еще раз огромное!

Последний раз редактировалось arkada38, 09.10.2012 в 19:13.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить параметр тега iframe AlexM jQuery 2 26.01.2012 12:05
Генерация событий в IFrame InTheTT Events/DOM/Window 1 13.10.2011 14:30
Скрыть iframe - транспорт при отправке формы. Kotakota AJAX и COMET 2 30.08.2011 10:43
Вложенные IFrame и History goldserg Элементы интерфейса 1 28.03.2011 15:57
Закрыть iframe из iframe rawuk Элементы интерфейса 1 02.03.2011 11:05