将javascript添加到Google网站

6
我试图将一个简单的Javascript包含到Google Sites中,但当我按下按钮时没有任何反应。我将代码放置在HTML框中。当本地测试时,代码可以完美运行。这是我的代码:
<script>
  function calcul(){
    x = parseFloat(document.getElementById("value1").value);
    y = parseFloat(document.getElementById("value2").value);
    document.getElementById("answer").innerHTML=x+y;
  }
</script>

<form action="" id="nothing">
  <input type="text" id="value1">
  <input type="text" id="value2">
<input type="button" value="Calculate" id="but" onclick="calcul()" />

<p id="answer"></p>

我有没有忘记什么使它工作?


你能给我们提供现场网站的链接吗? - Matt Zeunert
抱歉,我不能这样做。这是一个私人网站,所有者不想提供访问权限。 - VidalDuval
2个回答

5

Google Sites会改变你的整个脚本,因此在编写JavaScript时需要更加仔细。

在每个变量前面添加var可以解决你的问题:

<script>
  function calcul(){
    var x = parseFloat(document.getElementById("value1").value);
    var y = parseFloat(document.getElementById("value2").value);
    document.getElementById("answer").innerHTML=x+y;
  }
</script>

<form action="" id="nothing">
  <input type="text" id="value1">
  <input type="text" id="value2">
  <input type="button" value="Calculate" id="but" onclick="calcul()" />
</form>

<p id="answer"></p>

这将有效;-)

感谢关于 var bit 的解释(以及 @ben336 的解释)。不幸的是,这并没有解决问题,当我点击那个按钮时仍然没有反应。 - VidalDuval
你是否已经将代码插入到HTML框中?(插入-> HTML框) - Marvin Rabe
1
当您以管理员身份访问页面时会出现问题。请以查看者身份查看该页面(更多-> 以查看者身份预览页面)。那里应该可以正常工作。 - Marvin Rabe
1
好的,就是这样了!非常感谢,你刚刚让我的一天变得美好 :) - VidalDuval

1

谷歌网站会过滤掉它认为不安全的操作。这里有一些细节在这里,但是快速搜索无法找到官方文档。

正如另一个答案所提到的,您的变量需要 var 声明。这是必需的,因为如果没有这个,变量将成为窗口的全局变量,并且可能被用于逃离谷歌在网站javascript支持周围放置的任何沙箱,可能引起安全问题。

因此,要解决问题:

var x = parseFloat(document.getElementById("value1").value);
var y = parseFloat(document.getElementById("value2").value);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接