Я пишу скрипт для изменения того, какой элемент виден на основе строки в хеше. Сценарий перейдет на страницу блога, где пользователь может фильтровать записи в блогах по категориям. Когда пользователь фильтрует определенную категорию, эта категория добавляется к URL-адресу в виде хэш-ссылки.Если url hash не содержит никакой строки, выполните функцию
example.com/#categoryA
В этот момент я хочу, чтобы рядом с портфолио появлялось текстовое поле, соответствующее каждому набору фильтрованных сообщений. Однако, если пользователь не фильтруются сообщений, или идет от фильтрации сообщений для просмотра всех сообщений, есть один хэш в URL, как это:
example.com/#
В этом случае, я хочу текст по умолчанию поля для будет показано.
Мой скрипт (ниже) делает все, кроме отображения текстового поля по умолчанию, когда URL-адрес заканчивается только хешем.
var frag = window.location.href.split("#");
var hashClassChange = function() {
if (window.location.hash) {
//If the url hash contains commercial, show the commercial box, hide the last active box
if (window.location.hash.indexOf('commercial') == 1) {
$('#box1').addClass("active");
$('#default').removeClass("active");
$('#box2').removeClass("active");
$('#box3').removeClass("active");
$('#box4').removeClass("active");
}
//If the url hash contains hospitality, show the hospitality box, hide the last active box
else if (window.location.hash.indexOf('hospitality') == 1) {
$('#box2').addClass("active");
$('#default').removeClass("active");;
$('#box1').removeClass("active");
$('#box3').removeClass("active");
$('#box4').removeClass("active");
}
//If the url hash contains municipal-institutional, show the municipal/institutional box, hide the last active box
else if (window.location.hash.indexOf('municipal-institutional') == 1) {
$('#box3').addClass("active");
$('#default').removeClass("active");
$('#box1').removeClass("active");
$('#box2').removeClass("active");
$('#box4').removeClass("active");
}
//If the url hash contains residential, show the residential box, hide the last active box
else if (window.location.hash.indexOf('residential') == 1) {
$('#box4').addClass("active");
$('#default').removeClass("active");
$('#box1').removeClass("active");
$('#box2').removeClass("active");
$('#box3').removeClass("active");
}
//If the url hash does not contain any string, show the default box
else if (!frag[1].length) {
$('#default').addClass("active");
$('#box1').removeClass("active");
$('#box2').removeClass("active");
$('#box3').removeClass("active");
$('#box3').removeClass("active");
}
}
};
// repeats function every 500 milliseconds to check if the url hash has been changed
setInterval(hashClassChange, 500);
Как исправить этот скрипт так, чтобы текстовое поле по умолчанию показывало, когда URL-адрес заканчивается одним хэшем?
У меня есть кодофф, настроенный (http://codepen.io/ben393/pen/GNVqRX), чтобы показать это в действии.
не является ответ, но вы можете использовать 'window.location.hash', который даст хэш в форме« #hospitality ». Затем вы должны создать оператор switch (или если еще) с точными совпадениями. Использование indexOf, как вы сейчас делаете, может давать ложные срабатывания. –