Генерация ссылки в 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>
Заранее спасибо. |
если фрейм на странице один, то :
document.frames[0].src = "data.htm#" + u; |
Да, фрейм всего один. А что с этой строчкой делать?
<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>
Не правильно ведь, как я вставляюПлюс символ # стирается и в ссылке не отображается |
Цитата:
в u (или можно изменить имя переменной) записать номер желаемого абзатца. |
Цитата:
<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 этому будет равен? |
как-то так :
<form onsubmit="return false"
oninput="document.frames[0].src = 'data#' + (u.value = parseFloat(l.value) + parseFloat(m.value) + parseFloat(n.value)) ">
|
Спасибо за старания, но это даже output name="u" убивает
|
Цитата:
фрейм нужно пометить каким-нибудь 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)) ">
|
Успехи уже на лицо. Разве что при изменении положения ползунков почему-то не обновляется 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 страниц сделать вместо одного файла с множеством абзацев. Но смена положения ползунков не дает результата |
А вот так работает и даже без 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, время: 14:50. |