在循环中从文本数组分页HTML textarea内容

时间:2019-03-01 06:02:10

标签: javascript jquery html css

我需要使用上一个和下一个或通过指定位置来对数组进行分页,索引的更改必须显示与相应数组关联的值。

我尝试使用下面的代码,但是无法实现

我需要使用上一个和下一个或通过指定位置来对数组进行分页,索引的更改必须显示与相应数组关联的值。

我尝试使用下面的代码,但是无法实现

nil
var resultBox = $('#result')
var messages = ["cat", "dog", "fish"];
var idx = $("#pageNumber").val();
var length = messages.length;

var getNextIdx = (idx = -1, length, direction) => {
    switch (direction) {
        case '1':
            {
                $("#pageNumber").val((idx + 1) % length + 1)
                return (idx + 1) % length;
            }
        case '-1':
            {
                $("#pageNumber").val(((idx == 0) && length - 1 || idx - 1) + 1);
                return (idx == 0) && length - 1 || idx - 1;

            }
        default:
            {
                return idx;
            }
    }

}

var getNewIndexAndRender = function(direction) {
    idx = getNextIdx(idx, length, direction);
    console.log(idx)
    $("#result").val(messages[idx])
}

$(document).ready(function() {
    $("#pageNumber").change(function() {
        getNewIndexAndRender()
    });
});

getNewIndexAndRender()
    $( "#prev" ).trigger( "click" );

1 个答案:

答案 0 :(得分:1)

change函数中,您需要用idx重新分配the current input value - 1

$("#pageNumber").change(function() {
  idx = $(this).val() - 1;
  getNewIndexAndRender();
});

演示:

var resultBox = $('#result')
var messages = ["cat", "dog", "fish"];
var idx = $("#pageNumber").val();
var length = messages.length;

var getNextIdx = (idx = -1, length, direction) => {
  switch (direction) {
    case '1':
      {
        $("#pageNumber").val((idx + 1) % length + 1)
        return (idx + 1) % length;
      }
    case '-1':
      {
        $("#pageNumber").val(((idx == 0) && length - 1 || idx - 1) + 1);
        return (idx == 0) && length - 1 || idx - 1;

      }
    default:
      {
        return idx;
      }
  }

}

var getNewIndexAndRender = function(direction) {
  idx = getNextIdx(idx, length, direction);
  $("#result").val(messages[idx]);
}

$(document).ready(function() {
  $("#pageNumber").change(function() {
    idx = $(this).val() - 1;
    getNewIndexAndRender();
  });
});

getNewIndexAndRender()
$("#prev").trigger("click");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="result"></textarea>
<input type="text" id="pageNumber" value="0"></input>
<button id="prev" onclick="getNewIndexAndRender('-1')">prev</button>
<button id="next" onclick="getNewIndexAndRender('1')">next</button>