26 августа 2012

JavaScript: передача параметров между страницами

JavaScript

Это самоучитель по JavaScript на русском языке

забегая вперед:
к концу написания этого поста  (сопровождавшегося длительным копанием в интернете и вынесением мозга мужу-программиста) стало ясно, что это мне не html, с которым я разбираюсь по ходу процесса, и придется потратить денек-другой (оптимистка) на работу с самоучителем. пост пока что сохраню, позже придется его проверять и, возможно, править.

понадобилось мне разобраться с такой вот темой:
передача параметров между страницами
а я в скриптах и программировании полный ноль. ну, т.е., совсем ничего не знаю.
так что разбираю по косточкам вопрос и конспектирую каждый хрящик )

пользуюсь двумя примерами: пример 1 и пример 2, их и цитирую и разбираю


Для определения GET-параметров на JavaScript, необходимо произвести синтаксический разбор URL текущей страницы.

Структура URL - где живут параметры



в JavaScript строку с GET-параметрами можно определить так: 

window.location.search. Свойство search объектаlocation хранит часть URL, начиная с «?» до начала хеш-данных.

Пример:

Допустим, у нас есть следующий адрес:

http://web.izjum.com/some-page.html?var1=111&var2&var3=ttt#someHashData,

тогда window.location.search вернёт нам:

?var1=111&var2&var3=ttt



 скрипт (из примера2)

function getParam(sParamName){
    var Params = location.search.substring(1).split("&"); // отсекаем «?» и вносим переменные и их значения в массив
    var variable = "";
    for (var i = 0; i < Params.length; i++){ // пробегаем весь массив
        if (Params[i].split("=")[0] == sParamName){ // если это искомая переменная — бинго!
            if (Params[i].split("=").length > 1) variable = Params[i].split("=")[1]; // если значение параметра задано, то возвращаем его
            return variable;
        }
    }
    return "";
}


все, что отделено "//- комментарии

задаем функцию:  function getParam(sParamName)имя getParam аргумент (sParamName)

переменная Params 
         объект location (тыц) содержит информацию о текущем URL
                        свойство search объекта location выбирает часть URL после "?" (включительно)
             метод substring(1) (тыц) в данном случае отсекает "?"
                                 метод split("&") (тыц) разделяет полученную строку на массив (тыц), состоящий из кусочков, разделенных  "&"

переменная variable 

цикл for
       присваиваем переменной i значение 0
                цикл будет выполняться, пока переменная < Params.length т.е. меньше количества элементов массива (переменная  Params - наш массив, свойство  length  -  кол-во элементов массива).
               i++ означает i +1. после того, как проделаны все необходимые действия для i, присваиваем ему значение i +1 и продолжаем цикл.
               
                if (Params[i].split("=")[0] == sParamName)
               если        
                       (Params[i]: содержимое ячейки [i] переменной-массива Params 
                     split("="):разделяем на новый массив по знаку "=" (получается массив, состоящий из 2-х элементов: до знака и после знака)

                                                                         [0] - первая ячейка нового массива
                                                                                == если равно
                                                                                      sParamName)

             тогда переходим к следующей строке:
             
            if (Params[i].split("=").length > 1) variable = Params[i].split("=")[1]; 
            return variable;
        }            если количество ( length ) элементов массива, полученного после разделения (split("=")содержимого ячейки номер [i]  переменной-массива  Params   больше 1 ,
                           то
                               переменная variable будет = содержимому второй ячейки нашего нового массива: Params[i].split("=")[1]
            в этом случае на выход (туда, откуда наша функция вызывается) пойдет (вернется) это значение: return variable

в противном случае, т.е. если наши "if" не выполняются,  на возврат пойдет пустая строка : return ""













Комментариев нет:

Отправить комментарий