【问题标题】:How to include check all box in html sidebar如何在 html 侧边栏中包含选中所有框
【发布时间】:2017-02-23 17:39:16
【问题描述】:

我有以下代码用于在 Google 文档侧边栏中生成复选框:

for( var i = 0;i < values.length; i ++)
        {
        var cb = document.createElement( "input" );
        cb.type = "checkbox";
        cb.id = values[i][1];
        cb.value = values[i][0];
        var text = document.createTextNode( values[i][0].substring(0, 30) );
        var br = document.createElement('br');
        document.getElementById( 'class_list' ).appendChild( cb );
        document.getElementById( 'class_list' ).appendChild( text );
        document.getElementById( 'class_list' ).appendChild( br );     
       }

有没有办法在此列表顶部包含一个全选框,然后将所有选定的值和 ID 传递给另一个函数?

【问题讨论】:

  • 看起来您正在客户端代码中构建 HTML。我的经验是在服务器上构建 HTML 更快。但这是个人喜好。我使用作为模板的 HTML 文件,然后使用 HTML 服务评估模板。我发现在文件中布局 HTML 更容易。如果您想保持当前的方式,我添加了 DOM 标签。目前,这确实不是 Apps 脚本问题。
  • @SandyGood 我可以试试服务器端。创建全选复选框并将所选内容传递给另一个函数的任何提示?

标签: javascript html dom google-apps-script


【解决方案1】:

这里是 HTML 和客户端 JavaScript,可以满足您的需求:

<div class="inputFormElement"><!-- Beginning of input -->

  <button onmouseup="checkAllBoxes()">Select All</button>

  <br>
  <br>

  <div class="chkBoxListElement">
    <input type="checkbox" id="idOne" value="1">One<br>
    <input type="checkbox" id="idTwo" value="2">Two<br>
    <input type="checkbox" id="idThree" value="3">Three<br>
    <input type="checkbox" id="idFour" value="4">Four<br>
    <input type="checkbox" id="idFive" value="5">Five<br>
    <input type="checkbox" id="idSix" value="6">Six<br>
  </div>

</div><!-- End of input -->

<script>
window.checkAllBoxes = function() {
  var allCheckBoxes,dataAsString,elementHoldingChkBoxes,i,L,objectOfData,thisChkBox,thisID;

  objectOfData = {};

  elementHoldingChkBoxes = document.getElementsByClassName('chkBoxListElement')[0];
  console.log('elementHoldingChkBoxes: ' + elementHoldingChkBoxes)
  console.log('typeof elementHoldingChkBoxes: ' + typeof elementHoldingChkBoxes)

  allCheckBoxes = elementHoldingChkBoxes.getElementsByTagName('input');//Get all inputs

  L = allCheckBoxes.length;

  for (i=0;i<L;i++) {
    thisChkBox = allCheckBoxes[i];//Get this check box
    if (thisChkBox) {//Not null, undefined or empty string - truthy
      thisChkBox.checked = true;
      thisID = thisChkBox.id;
      objectOfData[thisID] = thisChkBox.value;
    }
  }

  dataAsString = JSON.stringify(objectOfData);//Convert object to a string
  console.log('dataAsString: ' + dataAsString)

  mySecondFunction(objectOfData);
}

window.mySecondFunction = function(data) {
  console.log(data)

}
</script>

如果您希望输入框在加载侧边栏时动态更改,则需要一些代码来构建 HTML。但这是另一个问题。

【讨论】:

  • 谢谢,我能够使用您的代码作为指南来创建全选、全部清除和动态构建复选框,效果很好。
猜你喜欢
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
相关资源
最近更新 更多