在select上使用.empty()之后不能使用.append

时间:2013-10-17 13:03:42

标签: jquery google-apps-script

我正在尝试动态添加选项,就像在此处给出的示例中一样:https://github.com/google/google-apps-script-samples/tree/master/simple_tasks
我几乎使用了确切的代码,但每次都会出错:

  

未捕获的TypeError:无法设置[object Object]的属性长度   它只有一个吸气剂

my code.gs:

function doGet(e) {
  return HtmlService.createTemplateFromFile('index').evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE).setTitle('RepairAdminSysteem');
}

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .getContent();
}

function data() {
  var ss = SpreadsheetApp.openById(SS_ID).getActiveSheet();
  var data = ss.getDataRange().getValues();
  Logger.log(Utilities.jsonStringify(data));
}

function init() {
  var status = ['VERSTUURD','NIET VERSTUURD','AKKOORD','NIET AKKOORD','HERRINNERING','TWEEDE HERRINNERING','GEEN REACTIE','NIET VAN TOEPASSING','PAUZE'].sort();
  return status;
}

我的(相关)html:

<select id='status' disabled>
  <option>Loading...</option>
</select>

和javascript:

<script>
  $(function() {
    $('#status').bind('change', loadPO);
    start();
   });


  function start() {
    google.script.run.withSuccessHandler(success)
      .init();
    }

  function success(status) {
    var select = $('#status');
    select.empty();
    status.forEach(function(elem) {
      var option = $('<option>').attr('value',elem).text(elem);
      select.append(option);      
    });
    select.prop('disabled', false);
    loadPO();
  }

  function loadPO() {
    alert('test');
  }

</script>

如果我将select.empty();更改为select.html('');,一切都按预期工作,但我不明白为什么它在简单任务示例中工作而不在我的代码中。

我想知道的是为什么这个几乎相同的代码在上面的链接中的简单任务应用程序中工作而不是在我的应用程序中?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情

       function success(status) {
            var select = $('#status');
            select.html('');
            var option = '';
            status.forEach(function(elem) {
              option = option + '<option value="'+elem+'">'+elem+'</option>';
            });
            select.append(option);      
            select.prop('disabled', false);
            loadPO();
        }

空也可以查看以下代码

        jQuery(function(){
            var select = $('#status');
            //select.html('');
            select.empty();
            var option = '';
          option = option +  '<option value="sad">sdasd</option>';
          option = option  + '<option value="avvsad">sdavvsd</option>';
          option = option   +'<option value="vvv">svvvdasd</option>';
          select.prop('disabled', false);
            select.append(option);      
        })

HTML CODE

    <select id='status' disabled>
          <option>Loading...</option>
        </select>

答案 1 :(得分:0)

 function success(status) {
            var select = $('#status');
            var option = '';
            status.forEach(function(elem) {
              option = option  '<option value="'+elem+'">'+elem+'</option>';
            });
            select.html(option);      // here html reset by new option
            select.prop('disabled', false);
            loadPO();
        }

参考 html()