Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   передать переменную в ссылке (https://javascript.ru/forum/misc/61274-peredat-peremennuyu-v-ssylke.html)

Dmitriy154 11.02.2016 15:11

передать переменную в ссылке
 
Здравствуйте, я на js не программировал, так что не судите строго.
У меня ситуация, хостинг не поддерживает php, поэтому хотел бы узнать, у меня есть страница с большим количеством, допустим, игр, точнее картинки с описанием игр, можно ли сделать с помощью js так, чтобы при нажатии на определенную игру открывалась одна и таже общая html страница для всех игр, но загружалась определенная, т.е. можно ли в ссылке добавлять название файла, и как его вытянуть и встроить. В PHP
ссылка передавалась так
index.php?namefile=abc,
а вытягивалась при помощи $_GET['namefile']
Есть ли что подобное в js?

webgame 11.02.2016 15:24

http://javascript.ru/window-location

Dmitriy154 11.02.2016 15:40

а можно в виде кода html
Я понимаю так, в ссылке добавляю
index.php?myText
а как в новом окне сослаться на myText

мой вариант не работает
<script type="text/javascript">

function str() {
window.location.string;
}

str();
</script>

destus 11.02.2016 15:53

Цитата:

Сообщение от Dmitriy154 (Сообщение 407285)
а можно в виде кода html
Я понимаю так, в ссылке добавляю
index.php?myText
а как в новом окне сослаться на myText

мой вариант не работает
<script type="text/javascript">

function str() {
window.location.string;
}

str();
</script>

Распарси window.location.search вот тебе и будут GET параметры.

Dmitriy154 11.02.2016 16:01

а какой функцией воспользоваться для парсинга, и как полученное значение подставить в html, прошу прощения, с js столкнулся впервые

destus 11.02.2016 16:02

Цитата:

Сообщение от Dmitriy154 (Сообщение 407290)
а какой функцией воспользоваться для парсинга, и как полученное значение подставить в html, прошу прощения, с js столкнулся впервые

типо такого
var search = window.location.search.substring(1);
             var result = search.split('&');
             var get = new Object();
             result.forEach(function (elem) {
                 var equal = elem.indexOf('=');
                 var name = elem.substring(0, equal);
                 var value = elem.substring(equal + 1);
                 get[name] = value;
             })
             for (var prop in get) {
                 alert(prop + ' = ' + get[prop]);
             }

Dmitriy154 11.02.2016 16:14

да понятно, почти
result это массив, элементы которого разделены &
get как я понимаю ассоциативный массив name и value
немного не пойму цикл
for (var prop in get) {
alert(prop + ' = ' + get[prop]);
}
и как мне переменную js использовать в html
в php мы используем <?php echo $i; ?>, а для js как?

destus 11.02.2016 16:29

Цитата:

Сообщение от Dmitriy154 (Сообщение 407292)
немного не пойму цикл
for (var prop in get) {
alert(prop + ' = ' + get[prop]);
}

Цикл для перебора всех переданных параметров. В prop - имя параметра, в get[prop] его значение.

Цитата:

Сообщение от Dmitriy154 (Сообщение 407292)
и как мне переменную js использовать в html
в php мы используем <?php echo $i; ?>, а для js как?

Например, document.write(). Однако данный метод можно использовать только на этапе формирования DOM дерева. Иначе это приведет к удалению текущего документа и созданию нового. Если надо что-то добавлять после загрузки документа, то тут в помощь https://learn.javascript.ru/modifying-document

ruslan_mart 11.02.2016 18:03

URL.prototype.get = function(key) {
	var matches = this.search.match(new RegExp(key + '=([^&]*)'))
	return matches && matches[1];
}



var url = new URL('http://index.php?namefile=abc');
//var url = new URL(window.location.href);

alert(url.get('namefile'));


Часовой пояс GMT +3, время: 14:06.