разбить строку и проверить, если части для предотвращения ошибок - PullRequest
1 голос
/ 28 декабря 2011

Допустим, мы изучаем строку URL:

http:/domain.com/en/#the-file.html/section-4

где я кодифицировал:

http:/domain.com/en/#{html file}/{id of the div}-{level}

так я могу узнать

var info = window.location.hash;
var temp = info.split("/");
var url = temp[0];
url = str_replace('#','',url);
var temp1 = temp[1];
temp1 = temp1.split('-');
var seccion = temp1[0];
var nivel = temp1[1];

, где

console.log('url: '+url);
console.log('info: '+nivel);
console.log('seccion: '+seccion);

предоставь мне эти кодифицированные переменные

Проблема в том, например, когда URL равен

http://domain.com/es/

что firebug переходит эту ошибку:

temp1 is undefined

Есть идеи, как это предотвратить?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Вместо использования split я рекомендую использовать RegExp, который не прерывается при появлении нескольких слешей или дефисов.

Приведенный ниже код всегда будет определять переменные url, nivel и seccion. Если хеш не существует, эти переменные будут пустой строкой.

var info = window.location.hash.match(/^#(.*?)\/(.*?)-(.*)$/),
    url="", nivel="", seccion="";
if (info) {
    url = info[1];
    nivel = info[2];
    seccion = info[3];
}
1 голос
/ 28 декабря 2011

Метод split по умолчанию не работает в Internet Explorer, вам придется найти обходной путь , поэтому подход RegEx будет лучше. Однако, если вы все еще хотите использовать split, вы можете использовать temp.length, чтобы увидеть, сколько фрагментов строки хранится в этой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...