2

GAS HTML サービスを使用してインターフェイスを作成し、クライアント側の操作を処理するために Javascript を試しました。

「this」は HTML サービスや Caja ではサポートされていませんか?

私のHTMLファイルには次のものがあります:

<input type="button" name="RemoveSample_1" id="RemoveSample_1" value="Remove" onClick="removeSampleNow(this)" />

テストする単純な Javascript 関数:

<script>
  function removeSampleNow(thisObj) {

    alert(thisObj.id);

  }
</script>

デスクトップでhtmlをローカルに実行すると機能しますが、GASで実行した場合は機能しません。エラーは「未定義」です。

関数呼び出しにパラメーターを渡すことはできませんか? では、選択/クリックされたボタンに基づいて HTML 要素の操作を行うにはどうすればよいでしょうか?

助けてくれてありがとう。

4

2 に答える 2

6

onclick html プロパティを使用できます (Caja が操作しますが)。コールバック関数では、「this」ではなく、引数を介して要素にアクセスします。

私が仕事を知る方法は2つあります。最初のものは最も単純です。コールバック関数では、「this」ではなく要素が引数になります。

<html>
  <head>
    <script>
      function onClickCallback(element){
        console.log('element.id ' + element.id);
        element.value = 'Clicked!';
      }
    </script>
  </head>
  <body>
      <input type="button" name="b1" id="b1" value="Click me" onclick='onClickCallback(this)' />
  </body>
</html>

2 番目の方法では、JQuery の機能を使用して、実行時にコールバック関数を動的にバインドします。この場合、コールバック関数は「this」を介して要素にアクセスします (関数への引数は必要ありません)。この 2 番目の例は必要ありませんが (最初の解決策は問題なく動作します)、JQuery が提供するライブラリなどを見つけることができるので、これを含めます。

<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script>
      // like onload but doesn't wait for images, only the dom
      $(document).ready(function() {
        // bind the click handler at run time
        $('#b1').click(onClickCallback);
      });

      function onClickCallback(){
        console.log('this.id ' + this.id);
        this.value = 'Clicked!';
      }
    </script>
  </head>
  <body>
      <input type="button" name="b1" id="b1" value="Click me" />
  </body>
</html>
于 2012-12-20T17:00:12.183 に答える
1

html 部分で on click プロパティを使用することはできません。Cajaの制限を参照してください。

その方法の例については、「スクリプトまたは外部 CSS を動的に追加する」を参照してください。

<script>
function doSomething() { alert('but this is fine!'); }
document.write('<input type="button" id="button1">')
document.getElementById('button1').onclick = doSomething;
</script>
于 2012-08-30T11:36:58.973 に答える