Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在两个复选框之间选中一系列复选框_Javascript_Arrays_Vue.js - Fatal编程技术网

Javascript 在两个复选框之间选中一系列复选框

Javascript 在两个复选框之间选中一系列复选框,javascript,arrays,vue.js,Javascript,Arrays,Vue.js,我有一个表格的行,每行有一个复选框。我已经建立了一个功能,检测是否按下了shift键,如果有,那么一旦选中了2个复选框,它将选中它们之间的复选框 该函数在某种程度上起作用,但出于某种原因,我必须勾选第三个框,以勾选中间的框 如何更改代码,使其选中第二个复选框,而不必选中第三个复选框 提前谢谢 下面是我的代码 Vue数据: data: () => ({ keycheck: false, checkRows: [] }) 创建: 创造{ window.addEventListener

我有一个表格的行,每行有一个复选框。我已经建立了一个功能,检测是否按下了shift键,如果有,那么一旦选中了2个复选框,它将选中它们之间的复选框

该函数在某种程度上起作用,但出于某种原因,我必须勾选第三个框,以勾选中间的框

如何更改代码,使其选中第二个复选框,而不必选中第三个复选框

提前谢谢

下面是我的代码

Vue数据:

data: () => ({
  keycheck: false,
  checkRows: []
})
创建:

创造{ window.addEventListener'keydown',e=>{ 如果e.keyCode===16{ this.keycheck=true 控制台。记录“按下换档键…” } } window.addEventListener'keyup',e=>{ 如果e.keyCode===16{ 控制台。记录'Upper' this.keycheck=false this.checkRows=[] //控制台。清除; } } }, 方法:{ 复选框键{ 如果这是我的钥匙{ 此为.checkRows.pushkey 如果this.checkRows.length==2{ console.logthis.checkRows
对于let i=this.checkRows[0];i来说,代码似乎没有任何问题。但是,如果您现在没有按住shift键,则第一次单击不会在checkRows变量中注册。因此,您必须在第一次单击时按住shift键,它才能在两次单击中工作

if (this.keycheck) {
    this.checkRows.push(key);
我在这个代码笔中复制了它:


仅供参考,最好使用this.checkRows.length=0;将数组设置为空,因为它不制作数组的副本。

我发现了这一点。通过添加此。$forceUpdate,它会更新数据。这之前是通过第三次单击完成的

methods: {
  checkbox(key) {
    if (this.keycheck) {
      this.checkRows.push(key)

      if (this.checkRows.length === 2) {
        console.log(this.checkRows)

        for (let i = this.checkRows[0]; i <= this.checkRows[1]; i++) {
          let bData = this.displayed_array

          bData[i]['rowCheck'] = true
          console.log('test')
         this.$forceUpdate()
        }
      }
    }
  },

如何将值绑定到复选框和触发复选框?如上面的示例所示,使用单击复选框谢谢…但是在您的示例中,我必须先选择一个框,然后取消选择它,然后我可以按住shift键并选择多个框…有什么想法吗?别担心!只是解决了。添加:这个。$forceUpdate;我将添加一个答案!t汉克斯