?

Log in

No account? Create an account
Передача параметров в js-файл из html
webdix
По мотивам http://rusforumz.com

Интересная тема на нашем форуме недавно обсуждалась, по поводу передачи параметров из html-документа в js-файл. С одной стороны в других языках это взаимодействие поставлено на широкую ногу. Взять к примеру php или другой серверный язык (ну, я ещё сравниваю по flash'у).

Как оказалось, в javascript такого нет. И там приходится действовать обходными путями, а именно из внешнего файла .js перебрать все элементы дерева DOM на странице, найти место, где мы вызывали скрипт, оттуда вытащить адрес скрипта и потом уже этот адрес разобрать с помощью различных средств (превращение строки в массив).

Ну, вот как это делается на практике.
Авторы решения Enigmatic и Лёлик2 - тема.

Вызов скрипта с HTML страницы с передачей ему параметра (или параметров отделеных &):

<script language="JavaScript" src="http://site.ru/my_js_code.js?id=1618"></script>


Содержание файла my_js_code.js:

var scriptList = document.getElementsByTagName("script");
var script_link;
for (var i = 0; i < scriptList.length; i++)
{
  if (scriptList[i].src.indexOf("my_js_code.js")!=-1) script_link = scriptList[i].src;
}
// теперь у нас в script_link содержится ссылка http://site.ru/my_js_code.js?id=1618
// осталось только добыть значение id

function GetParameter(sParameterName){
    var Parameters = script_link.substring(script_link.indexOf("?")+1).split("&"); // отсекаем «?» и вносим переменные и их значения в массив
    var value = "";
    for (var i = 0; i < Parameters.length; i++){ // пробегаем весь массив
        if (Parameters[i].split("=")[0] == sParameterName){ // если это искомая переменная — бинго!
            if (Parameters[i].split("=").length > 1) value = Parameters[i].split("=")[1]; // если значение параметра задано, то возвращаем его
            return value;
        }
    }
    return "";
}
var ID=GetParameter("id"); // получили значение id, теперь используем его дальше как нам нужно


Вот так, пользуйтесь!