У меня есть два файла jQuery: один из них [newForms_jQuery.js] вызывается в userNewItemForm и adminNewItemForm, а другой пользователь [editForms_jQuery.js] вызывается в userEditItemForm и adminEditItemForm.Логический оператор OR в операторе case JavaScript
Я хотел бы объединить эти два файла в один файл jQuery, и я хотел использовать оператор case.
я узнал, что синтаксис будет
switch(n)
{
case 1:
execute code block 1
break;
case 2:
execute code block 2
break;
default:
code to be executed if n is different from case 1 and 2
}
Я получаю имя файла, чтобы дифференцировать КСТАТИ новые и редактировать формы, а затем сделать что-то, исходя из этого. Моя первая мысль была использовать логическое ИЛИ в моем случае, например:
case (url="userNewItemForm.aspx") || (url="adminNewItemForm.aspx"):
//do something
case (url="userEditItemForm.aspx") || (url="adminEditItemForm.aspx"):
//do soemthing else
Однако, я нашел https://stackoverflow.com/a/1806279/429694. Итак, я пересмотрел мой сценарий:
switch(url)
{
case "userNewItemForm.aspx": //intentionally left blank to fall through
case "adminNewItemForm.aspx":
// do new record stuff
break;
case "userEditItemForm.aspx": //intentionally left blank to fall through
case "adminEditItemForm.aspx":
//do edit record stuff
break;
default:
alert(url);
}
Это, казалось, работали, однако при дальнейшем тестировании, я обнаружил, что заявления случая, которые не имеют перерыв; не провалился, как я и ожидал. Любой совет?
UPDATE1: Следуя совету @ jbabey, я пересмотрел свой сценарий на следующее, что я решил решить мою проблему, однако это не совсем так. Кажется, когда я открываю url, который находится во второй части инструкции OR, он не забирает имя и вместо этого выполняет случай по умолчанию.
Вот мой текущий код
function getFileName()
{
url = document.location.href; //gets the full url. URL is global var after function called
url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#")); //this removes the anchor at the end, if there is one
url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?")); //this removes the query after the file name, if there is one
url = url.substring(url.lastIndexOf("/") + 1, url.length); //this removes everything before the last slash in the path
return url; //returns filename
}
$(document).ready(function(){
getFileName();
switch (url)
{
case ("eacrfNew_jQuery.aspx" || "newItem_jQuery.aspx"):
// do new record stuff
break;
case ("eacrfEdit_jQuery.aspx" || "editItem_jQuery.aspx"):
//do edit record stuff
break; //close edit record stuff
default:
// which file did it open?
alert(url);
}
}); // close doc.ready
FINAL UPDATE:
Вы не можете использовать логические операторы В случае ЗАЯВЛЕНИЙ Вместо этого, вы должны использовать, если ... остальное См http://www.naveen.com.au/javascript/jquery/switch-case-in-jquery/319 подробности.
function getFileName()
{
url = document.location.href; //gets the full url into global var
return url; //returns filename
}
function clearID()
{
//clears field values
}
$(window).load(function(){
$(document).ready(function(){
getFileName();
if ((url === "eacrfNew_jQuery.aspx") || (url === "newItem_jQuery.aspx")) {
// do new record stuff
} else if ((url === "eacrfEdit_jQuery.aspx") || (url === "editItem_jQuery.aspx")) {
// do edit record stuff
} else {
/// default: which file did it open?
alert(url);
}
}); // close doc.ready
}); // close window.load
Что сделал вы ожидаете. Что случилось? – Neal
@Neal: Я ожидал, был ли URL-адрес userNewItemForm, что он выполнит «новые записи» ниже adminNewItemForm – jg100309