Javascript 分离嵌套函数

Javascript 分离嵌套函数,javascript,Javascript,我正在开发自己的插件。它生成桌子div和椅子div,并将椅子分组到桌子div。创建椅子是在table函数中的一个函数中完成的,但这不是一个好的实践,因为插件通常包含单独的函数 不过我想让椅子成为可选的,这意味着代码可以很好地工作,并且不会报告任何错误。但是我不能把椅子函数放在table函数之外,并且没有错误。我可能是走错了方向?我需要改变什么 function createTables() { var availableTables = [], newTable,

我正在开发自己的插件。它生成桌子div和椅子div,并将椅子分组到桌子div。创建椅子是在table函数中的一个函数中完成的,但这不是一个好的实践,因为插件通常包含单独的函数

不过我想让椅子成为可选的,这意味着代码可以很好地工作,并且不会报告任何错误。但是我不能把椅子函数放在table函数之外,并且没有错误。我可能是走错了方向?我需要改变什么

    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;inewTable=$('如果希望席位是可选的,请在设置中添加一个
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。它已经传递了。