Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   SWITCH чертов. Немогу понять в чем дело. (https://javascript.ru/forum/events/51090-switch-chertov-nemogu-ponyat-v-chem-delo.html)

skuty 23.10.2014 21:48

SWITCH чертов. Немогу понять в чем дело.
 
var domainlocation = window.location.href;

	var regular_exp = /.ua\/\w+/g;

	var result_domainlocation = domainlocation.match(regular_exp);




	if ( result_domainlocation == '.ua/Vinogradiv' ) {
		alert('Vinogradiv');
	}
	if ( result_domainlocation == '.ua/Beregove' ) {
		alert('Beregove');
	}




	switch (result_domainlocation) {
		case ".ua/Vinogradiv" : alert("Vinogradiv"); break;
		case ".ua/Beregove" :   alert('Beregove');
	}


Добрый день.
Такая банальная проблема
инструкция IF - все работает,
SWITCH - НЕТ.

подскажите в чем проблема(регулярка работает.)

рони 23.10.2014 22:04

skuty,
result_domainlocation у вас что? сам себе отвечаю массив или null
Цитата:

Сообщение от skuty
инструкция IF - все работает,

ой а если === вместо ==

skuty 23.10.2014 22:14

у меня получаеться result_domainlocation = ".ua/Vinogradiv" (допустим).
Еще одно, эта переменная как бы свойство обьекта. Может в этом дело?

та используя инструкцию IF код выполняеться.
а через switch почему то нет.
мне нужен switch, так как много вариантов будет.
я просто синтаксис незнаю или что. должен работать а не работает.

рони 23.10.2014 22:25

skuty,
ну превратите массив в строку то и сравнивайте
switch (''+result_domainlocation)

Цитата:

Сообщение от skuty
у меня получаеться result_domainlocation = ".ua/Vinogradiv" (допустим).

недопустим )))
у вас result_domainlocation = [".ua/Vinogradiv"]

рони 23.10.2014 22:32

skuty,
http://javascript.ru/comparison-operators
Цитата:

Равно (==) Если два операнда не одного типа, javascript преобразовывает типы и сравнивает строго. Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку
http://javascript.ru/String/match
http://javascript.ru/switch
Цитата:

Конструкция switch служит для сравнения значения на равенство с различными вариантами.

При этом равенство подразумевается в смысле оператора "===",
доки читать надо :cray:

skuty 23.10.2014 22:33

Спасибо... вот что значит лишние 2 символа. блин.))

danik.js 23.10.2014 22:37

Цитата:

Сообщение от skuty
var regular_exp = /.ua\/\w+/g;

Кстати, точку надо экранировать, или это метасимвол? Нужно отловить именно .ua или xua - где x - любой символ?

skuty 23.10.2014 23:25

именно .ua (так как из урл выбераеться)
спасибо.

Может подскажите как решить проще..
выборку

site.ua/poslugy
site.ua/Kiev/poslugy

при моем выражении береться первое слово, но в первом случаи мне не подходит.

я использую прямой пусть (window.location.href)
думаю в таком случаи использовать window.location.origin, так как у меня еще региональних доменов дофіг(типу kiev.ua, dn.ua, lviv.ua)

Aetae 24.10.2014 00:03

var regular_exp = /\.ua\/(\w+)\//;
var result_domainlocation = domainlocation.match(regular_exp);
if(result_domainlocation) result_domainlocation = result_domainlocation[1];

Цитата:

Сообщение от skuty (Сообщение 337222)
думаю в таком случаи использовать window.location.origin

Если можешь - используй, почему нет.

terminator-101 24.10.2014 00:13

Цитата:

Сообщение от skuty
site.ua/poslugy
site.ua/Kiev/poslugy

Чо проще? Регулярку? Ты выражайся ясней, опиши шаблон который тебе нужен. Если единственный адрес site.ua/Kiev/poslugy то так и пиши /^site\.ua\/Kiev\/poslugy$/, а если надо перескакивать через слеш, то /^site\.ua\/\w+\/poslugy$/i, опиши внятно шаблон. И зачем ты там g поставил? Хочешь чтобы матчились "site.ua/Kiev/poslugy/VSYA HUYNYA site.ua/Kiev/poslugy" или чо?


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