В том числе JavaScript для сайтов Google

Я пытаюсь включить простой JavaScript в Сайты Google, но ничего не получаю при нажатии кнопки. Я поместил код в 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>

Есть что-то, что я забыл, чтобы заставить это работать?

2 ответа

Решение

Сайты Google изменяют весь ваш скрипт. Вы должны быть немного осторожнее при написании 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>

Это будет работать;-)

Сайты Google будут отфильтровывать операции, которые он считает небезопасными. Некоторые подробности здесь, но не удалось найти официальную документацию с помощью быстрого поиска.

Как говорит другой ответ, ваши переменные должны var деклараций. Это необходимо, потому что без этого переменные станут глобальными для окна и потенциально могут быть использованы для выхода из любой песочницы, которую Google ставит вокруг поддержки javascript сайтов, что может вызвать проблемы безопасности.

Итак, чтобы исправить:

var x = parseFloat(document.getElementById("value1").value);
var y = parseFloat(document.getElementById("value2").value);
Другие вопросы по тегам