Javascript 分离嵌套函数
我正在开发自己的插件。它生成桌子div和椅子div,并将椅子分组到桌子div。创建椅子是在table函数中的一个函数中完成的,但这不是一个好的实践,因为插件通常包含单独的函数 不过我想让椅子成为可选的,这意味着代码可以很好地工作,并且不会报告任何错误。但是我不能把椅子函数放在table函数之外,并且没有错误。我可能是走错了方向?我需要改变什么Javascript 分离嵌套函数,javascript,Javascript,我正在开发自己的插件。它生成桌子div和椅子div,并将椅子分组到桌子div。创建椅子是在table函数中的一个函数中完成的,但这不是一个好的实践,因为插件通常包含单独的函数 不过我想让椅子成为可选的,这意味着代码可以很好地工作,并且不会报告任何错误。但是我不能把椅子函数放在table函数之外,并且没有错误。我可能是走错了方向?我需要改变什么 function createTables() { var availableTables = [], newTable,
function createTables() {
var availableTables = [],
newTable, tableProp;
for (var i = 0; i < defaultSettings.numberofTables; i++) {
newTable = $('<div id="table' + i + '"></div').css({ 'width': defaultSettings.tableSize.tableW + '%', 'height': defaultSettings.tableSize.tableH + '%', 'background-color': 'black' });
tableProp = { 'left': defaultSettings.tablePos.posX + '%', 'top': defaultSettings.tablePos.posY + '%', 'position': 'absolute', 'display': 'none' };
var availableSeats = [],
newSeat, seatProp;
var horPosArr = new Array(0, 5, 10);
var seatPosX, seatPosY;
function createSeats() {
for (var j = 0; j < 6; j++) {
if (j < 3) {
seatPosX = defaultSettings.tablePos.posX + horPosArr[j];
seatPosY = defaultSettings.tablePos.posY + 14;
} else {
seatPosX = defaultSettings.tablePos.posX + horPosArr[j - 3];
seatPosY = defaultSettings.tablePos.posY - 4.5;
}
newSeat = $('<div class="seat' + i + '"></div').css({ 'width': defaultSettings.seatSize.seatW, 'height': defaultSettings.seatSize.seatH, 'background-color': 'white', 'border': 'solid black 2px' });
seatProp = { 'left': seatPosX + 0.5 + '%', 'top': seatPosY + '%', 'position': 'absolute', 'display': 'none' };
newSeat.css(seatProp).appendTo('body').fadeIn(defaultSettings.speed);
availableSeats.push(newSeat);
}
return availableSeats;
}
availableSeats = createSeats();
函数createTables(){
var availableTables=[],
newTable,tableProp;
对于(var i=0;i newTable=$('如果希望席位是可选的,请在设置中添加一个seats
属性。我可能会像这样拉出createSeats函数
function createSeats(tablePos) {
var availableSeats = []
var seatPosX, seatPosY;
var horPosArr = new Array(0, 5, 10);
for (var j = 0; j < 6; j++) {
if (j < 3) {
seatPosX = defaultSettings.tablePos.posX + horPosArr[j];
seatPosY = defaultSettings.tablePos.posY + 14;
} else {
seatPosX = defaultSettings.tablePos.posX + horPosArr[j - 3];
seatPosY = defaultSettings.tablePos.posY - 4.5;
}
var newSeat = $('<div class="seat' + tablePos + '"></div').css({ 'width': defaultSettings.seatSize.seatW, 'height': defaultSettings.seatSize.seatH, 'background-color': 'white', 'border': 'solid black 2px' });
var seatProp = { 'left': seatPosX + 0.5 + '%', 'top': seatPosY + '%', 'position': 'absolute', 'display': 'none' };
newSeat.css(seatProp).appendTo('body').fadeIn(defaultSettings.speed);
availableSeats.push(newSeat);
}
return availableSeats;
}
功能createSeats(tablePos){
var AvailableSets=[]
变量seatPosX,seatPosY;
var horPosArr=新数组(0,5,10);
对于(var j=0;j<6;j++){
if(j<3){
seatPosX=defaultSettings.tablePos.posX+horPosArr[j];
seatPosY=defaultSettings.tablePos.posY+14;
}否则{
seatPosX=defaultSettings.tablePos.posX+horPosArr[j-3];
seatPosY=defaultSettings.tablePos.posY-4.5;
}
var newSeat=$('如果希望席位是可选的,请在设置中添加一个seats
属性。我可能会像这样拉出createSeats函数
function createSeats(tablePos) {
var availableSeats = []
var seatPosX, seatPosY;
var horPosArr = new Array(0, 5, 10);
for (var j = 0; j < 6; j++) {
if (j < 3) {
seatPosX = defaultSettings.tablePos.posX + horPosArr[j];
seatPosY = defaultSettings.tablePos.posY + 14;
} else {
seatPosX = defaultSettings.tablePos.posX + horPosArr[j - 3];
seatPosY = defaultSettings.tablePos.posY - 4.5;
}
var newSeat = $('<div class="seat' + tablePos + '"></div').css({ 'width': defaultSettings.seatSize.seatW, 'height': defaultSettings.seatSize.seatH, 'background-color': 'white', 'border': 'solid black 2px' });
var seatProp = { 'left': seatPosX + 0.5 + '%', 'top': seatPosY + '%', 'position': 'absolute', 'display': 'none' };
newSeat.css(seatProp).appendTo('body').fadeIn(defaultSettings.speed);
availableSeats.push(newSeat);
}
return availableSeats;
}
功能createSeats(tablePos){
var AvailableSets=[]
变量seatPosX,seatPosY;
var horPosArr=新数组(0,5,10);
对于(var j=0;j<6;j++){
if(j<3){
seatPosX=defaultSettings.tablePos.posX+horPosArr[j];
seatPosY=defaultSettings.tablePos.posY+14;
}否则{
seatPosX=defaultSettings.tablePos.posX+horPosArr[j-3];
seatPosY=defaultSettings.tablePos.posY-4.5;
}
var newSeat=$('我认为嵌套函数不存在相关性。您可以创建另一个函数,该函数将使用参数。内部函数使用外部函数的变量。传递这些变量(如horPosArr
)作为新函数的参数,您可以将其放置在createTables
之外。我也在学习这方面的知识,但有一种方法可以考虑:-这也可能是//的一个很好的候选对象,否则-您可能应该用更简单的示例将问题进一步分解为几个部分。我不认为有任何问题嵌套函数相关的变量。您可以创建另一个函数,该函数将使用参数。内部函数使用外部函数中的变量。传递这些变量(如horPosArr
)作为新函数的参数,您可以将其放置在createTables
之外。我也在学习这方面的知识,但有一种方法可以考虑:-这也可能是//的一个很好的候选对象-您可能应该用更简单的示例将问题进一步细分。在回答之后,我改变了每个seat的类都有自己的类,而不仅仅是数组中其他seat div的类。我想这样给每个seat分配自己的类:
,这样我就可以针对属于特定类的每个seat:
我需要I
整数来实现表函数中的循环。如何我将其传递给seats函数?@Zhyohzhy tablePos是createTables方法中的I。它已经传递了。在您回答之后,我更改了每个seat的类,以便它们都有自己的类,而不仅仅是与数组中的其他seat div相同的类。我想给每个seat div这样的类:
,以便我可以针对每个seat div渴望这样的特定类:
我需要在tables函数中循环的I
整数。如何将其传递给seats函数?@Zhyohzhy tablePos是createTables方法中的I。它已经传递了。