Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Генерация ссылки в iframe (https://javascript.ru/forum/misc/32262-generaciya-ssylki-v-iframe.html)

arkada38 09.10.2012 13:22

Генерация ссылки в 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>

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

melky 09.10.2012 14:55

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

document.frames[0].src = "data.htm#" + u;

arkada38 09.10.2012 15:17

Да, фрейм всего один. А что с этой строчкой делать?
<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>
Не правильно ведь, как я вставляю
Плюс символ # стирается и в ссылке не отображается

melky 09.10.2012 15:39

Цитата:

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

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

в u (или можно изменить имя переменной) записать номер желаемого абзатца.

arkada38 09.10.2012 16:12

Цитата:

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

в 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 этому будет равен?

melky 09.10.2012 16:40

как-то так :

<form onsubmit="return false"
      oninput="document.frames[0].src = 'data#' + (u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)) ">

arkada38 09.10.2012 17:19

Спасибо за старания, но это даже output name="u" убивает

melky 09.10.2012 18:13

Цитата:

Сообщение от arkada38 (Сообщение 209053)
Спасибо за старания, но это даже 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)) ">

arkada38 09.10.2012 18:36

Успехи уже на лицо. Разве что при изменении положения ползунков почему-то не обновляется 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:46

А вот так работает и даже без 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>

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


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