0

嗨,我想知道这是否是预期的行为:

<html>
  <head>
  </head>
  <body>
    <?if(a){
      Logger.log("a ="+a)?>
      <table>
        <tr>
          <th>First Name</th>
          <th>Last Name</th>
          <th>Id</th>
        </tr>
        <tr>
          <td><input type='text' name=firstName id='firstNameToEdit' /></td>
          <td><input type='text' name=lastName id='lastNameToEdit' /></td>
          <td><label id='down_id'></label></td>
        </tr>
      </table>
    <?}else{Logger.log("a="+a)}?>
  </body>  
</html>

当 a 被定义时,我在日志中得到 a 的值,并且一切都按预期显示,但是当我离开 a 未定义时,执行似乎停止在 if(a) 并且日志什么也不显示。

我像这样提供html:

  var t = HtmlService.createTemplateFromFile('test');
  return t.evaluate();

当我以这种方式服务时:

  var t = HtmlService.createTemplateFromFile('test');
  t.a = b;
  return t.evaluate();

where (b:{undefined,null}) 那么如果我在 html 模板中记录 a 的值,我会得到 a=null (在这两种情况下)。似乎模板中不能有未定义的变量。

PS我真的很感激一种在编辑器中关闭自动识别的方法

4

1 回答 1

1

如果您在编辑器中运行 doGet() 方法,您应该会看到错误:

ReferenceError:未定义“a”。

在 JavaScript 中,您不能引用不存在的变量。要解决此问题,您可以将 if 大小写更改为:

<? if (this.a) {

由于this始终定义为当前对象/范围。

于 2012-07-30T19:29:20.413 回答