Перенос данных
Добрый вечер дорогие форумчане!
Есть задача не знаю можно ли ее осуществить?! Имеется информация в таком типе! Страница №1 <div class="over-1">ТЕСТОВЫЙ ТЕКСТ ОДИН</div> <div class="over-2">ИНФОРМАЦИЯ ОДИН</div> <div class="over-3">ТЕКСТ ДВА</div> <a href="/stuff/1-0-0-0-1">Кнопка на другую страницу</a> Страница №2 <select size="1" class="test-1" name="filter1"> <option value="0">- выбрать -</option> <option value="1">ТЕСТОВЫЙ ТЕКСТ ОДИН</option> <option value="2">ТЕСТОВЫЙ ТЕКСТ ДВА</option> </select> <select size="1" class="test-2" name="filter2"> <option value="0">- выбрать -</option> <option value="1">ИНФОРМАЦИЯ ОДИН</option> <option value="2">ИНФОРМАЦИЯ ДВА</option> </select> <select size="1" class="test-3" name="filter3"> <option value="0">- выбрать -</option> <option value="1">ТЕКСТ ОДИН</option> <option value="2">ТЕКСТ ДВА</option> </select> Вопрос возможно ли авто заполнение селектов на второй странице при клике кнопки <a href="/stuff/1-0-0-0-1"> на первой странице?? если на странице один в <div> уже вписана альтернативная информация?? Искала подобное на форуме не смогла найти помоги пожалуйста с поиском информации по данному типу решения! Заранее большое всем спасибо! |
Если я правильно понял:
на первой странице добавьте:
document.body.onmousedown = function(t){
if((t=t.target).tagName == 'A'){
t.search = encodeURI(
JSON.stringify(
Array.prototype.map.call(
document.querySelectorAll('[class^="over-"]'),
function(el){ return el.innerHTML.trim() }
)
)
)
}
}
на второй:
window.onload = function(){
if(location.search){
var txt = JSON.parse( decodeURI( location.search.slice(1) ) );
var options = document.getElementsByTagName('option'), i = options.length;
while(i--){
if(txt.indexOf( options[i].innerHTML.trim() ) !== -1){
options[i].selected = true;
}
}
}
}
Но вообще, обычно такие вещи делают на сервере. |
Цитата:
|
Sakyra,
Спасибо большое сейчас буду пробывать))) |
Aetae,
работает спасибо вам большое все то что мне нужно))) |
Ок, тогда лучше onmousedown прописать конкретным ссылкам, примерно так:
<a href="/stuff/1-0-0-0-1" onmousedown="addSelected(event)">Кнопка на другую страницу</a>
<script>function addSelected(t){
if((t=t.target).tagName == 'A'){
t.search = encodeURI(
JSON.stringify(
Array.prototype.map.call(
document.querySelectorAll('[class^="over-"]'),
function(el){ return el.innerHTML.trim() }
)
)
)
}
}</script>
сейчас просто информация добавляется ко всем. |
Aetae,
спасибо и правда такой вариант на много лучше :thanks: |
Добрый вечер возник вопрос прощу помощи дорогие форумчане!
К примеру у меня заполнилась адресная строка таким образом сайт.ру/stuff/1-0-0-0-1?%5B"2010","Cadillac","Escalade"%5D при загрузке второй странице где идет авто заполнение селекторов у меня имеется 3 селектора Год выпуска *: В котором уже записаны все года Марка *: В котором уже записаны марки Модель *: В котором не чего нет если не заполнена марка Селект выглядит так Модель *: <select id="swF_fl" onchange="zapolnswF()"> <option>-</option> </select> как загрузилась вторая страница селекты заполняются таким образом Год выпуска *: 2010 Марка *: Cadillac Модель: - а третий селект по прежнему черточка, если выбрать любую другую марку и потом снова поставить Cadillac то селектор Модель подгружает в себя информацию, надеюсь внятно объяснила)) спасибо за внимание и прощу помощи как разобраться с этой проблемой?? |
Надо понимать третий select заполняется скриптом и изначально пустой, потому и не работает.
Могу предположить, что надо сделать так(вторая страница):
window.onload = function(){
if(location.search){
var txt = JSON.parse( decodeURI( location.search.slice(1) ) );
var selects = document.getElementsByTagName('select'), i = selects.length;
while(i--){
if(selects[i].onchange){
selects[i].onchange(); //искусственно вызываем change
}
}
var options = document.getElementsByTagName('option'), i = options.length;
while(i--){
if(txt.indexOf( options[i].innerHTML.trim() ) !== -1){
options[i].selected = true;
}
}
}
}
|
Aetae,
Спасибо большое сейчас буду пробовать ваши советы! :thanks: |
Aetae,
по пробовала но скрипт не реагирует не заполняет не один селект :( |
если я хоть чуть чуть понимаю))) то мне кажется это событие не срабатывает
var selects = document.getElementsByTagName('select'), i = selects.length;
while(i--){
if(selects[i].onchange){
selects[i].onchange();
}
}
|
Странно. Этот скрипт должен заменить предыдущий, возможно вы просто его добавили?
|
Aetae,
я заменила на 2 странице это
window.onload = function(){
if(location.search){
var txt = JSON.parse( decodeURI( location.search.slice(1) ) );
var options = document.getElementsByTagName('option'), i = options.length;
while(i--){
if(txt.indexOf( options[i].innerHTML.trim() ) !== -1){
options[i].selected = true;
}
}
}
}
На это
window.onload = function(){
if(location.search){
var txt = JSON.parse( decodeURI( location.search.slice(1) ) );
var selects = document.getElementsByTagName('select'), i = selects.length;
while(i--){
if(selects[i].onchange){
selects[i].onchange(); //искусственно вызываем change
}
}
var options = document.getElementsByTagName('option'), i = options.length;
while(i--){
if(txt.indexOf( options[i].innerHTML.trim() ) !== -1){
options[i].selected = true;
}
}
}
}
не чего не изменяла не редактировала как вы мне посоветовали! Но если убрать то все начинает работать кроме 3 селекта
var selects = document.getElementsByTagName('select'), i = selects.length;
while(i--){
if(selects[i].onchange){
selects[i].onchange();
}
}
|
Тогда напрямую:
window.onload = function(){
if(location.search){
var txt = JSON.parse( decodeURI( location.search.slice(1) ) );
var select = document.getElementById('swF_fl');
if(select.onchange){
select.onchange(); //искусственно вызываем change
}
var options = document.getElementsByTagName('option'), i = options.length;
while(i--){
if(txt.indexOf( options[i].innerHTML.trim() ) !== -1){
options[i].selected = true;
}
}
}
}
|
Aetae,
Сейчас попробую также прочтите ЛС :thanks: |
Aetae,
Работаю первый два селекта 3 по прежнему выдает черточку возможно ли с вами связаться вконтакте или еще где либо? показать вам сайт возможно есть какие то ньюансы? а то боюсь тут ругаться за флуд начнут ;) |
В личку пишите адрес, посмотрю.
|
window.onload = function(){
if(location.search){
var txt = JSON.parse( decodeURI( location.search.slice(1) ) );
var selects = [].slice.call(document.getElementsByTagName('select')), //создаём массив из select'ов
i = selects.length; //количество селестов
while(i--){ //перебираем все селекты на странице(в лучше наверное перебирать конкретные, чтобы не было коллизий)
var options = selects[i].getElementsByTagName('option'), //получаем options текущего select
j = options.length;
while(j--){ //перебираем option
if(txt.indexOf( options[j].innerHTML.trim() ) !== -1){ //если значение совпадает с одним из переданных в адресе значений
options[j].selected = true; //выбираем его
$(selects[i]).trigger('change'); //вызываем событие change через библиотеку jquery
selects.splice(i,1); //удаляем отработанный select из массива
i = selects.length; //чтобы перебор select начался сначала
break; //прервыем перебор option
}
}
}
}
}
|
Aetae,
Спасибо :thanks: |
Aetae,
А таким способом только авто заполнение селекта можно сделать? К примеру если мне нужно название кнопки переместить с страницы №1 на страницу №2 в поле input, как мне все это организовать?) И где можно об этом почитать? Заранее большое спасибо! |
Передавать таким образом можно любые js данные, способ универсален:
function addSelected(event){
t=event.target;
var array = Array.prototype.map.call(
document.querySelectorAll('[class^="over-"]'),
function(el){ return el.innerHTML.trim() }
); //получаем массив состоящий из innerHTML всех элементов с class начинающимся на "over-"
t.search = encodeURI(
JSON.stringify( array ) //проевращаем javascript-объект в строку
); //кодируем строку
}
window.onload = function(){ //как только страница загружена полностью
if(location.search){ //если в адресе есть параметр после ?
var obj = JSON.parse( decodeURI( location.search.slice(1) ) ); //декодируем и преобразуем обратно в javascript-объект
//выполняем действия с загруженными данными
}
}
Соответственно, что дальше делать с данными - уже вам решать. Почитать тут: http://learn.javascript.ru/dom |
| Часовой пояс GMT +3, время: 05:50. |