Генерация ссылки в 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, время: 06:46. |