Функция Javascript не работает + VAR
Я новичок в JavaScript, и я пытаюсь создать скрипт в HTML, который создает переменную х, а затем записывает его в ячейку таблицы. Это то, что я придумал, но это не работает.
<table border="1">
<tr>
<td>Text</td>
<td id="xx"></td>
<td><button type="button" onclick="x()">Check</button></td>
</tr>
</table>
<script>
function x() {
var x = idec.device_read("D", 0901, 0, 0);
}
document.getElementById("xx").innerHTML = x;
</script>
Идея состоит в том, что когда вы нажимаете кнопку, результат из var x можно просмотреть в ячейке. Но так как это не сработало, я добавил следующее в скрипт
var y = 5;
прямо наверху
Потом я добавил
<p>
<script>
document.write(x + "<br>");
document.write(y);
</script>
</p>
Который в теории должен хотя бы добавить пятерку после таблицы... или нет? Потому что не появилось пятерых...
Частично проблема может заключаться в том, что у меня есть
var x = idec.device_read("D", 0901, 0, 0);
отчасти неправильно, так как я не могу правильно это проверить.
2 ответа
Вы делаете запись содержимого в ячейку таблицы вне вашей функции, заставляя ее запускаться сразу после загрузки страницы. В то время переменная x еще не была объявлена, поэтому она ничего не будет делать. Затем при нажатии на кнопку все, что происходит, это то, что переменная x заполняется, но с этим ничего не делается.
function x() {
var x = idec.device_read("D", 0901, 0, 0);
document.getElementById("xx").innerHTML = x;
}
Я не знаю, что должен делать idec.device_read(), поэтому я не могу комментировать, является ли это частью проблемы. Тем не менее, я бы рекомендовал разбить проблему на более мелкие части, заменив вызов этой функции фиксированным значением. Если вы можете заставить запись в ячейку таблицы работать, вы можете добавить этот код обратно, чтобы решить проблему чтения значений с устройства. Разделяй и властвуй
function x() {
var x = 'test';
document.getElementById("xx").innerHTML = x;
}
Как указано в комментариях AlienArrays: именование ваших функций в переменных тоже опасно в Javascript:
function writeDeviceValueToCell() {
var deviceValue = 'test';
document.getElementById("xx").innerHTML = deviceValue;
}
При публикации вопросов, связанных с разработкой на стороне клиента, рассмотрите возможность добавления своего кода в JS Fiddle. Таким образом, люди, заинтересованные в помощи, могут легче увидеть, что вы пытаетесь сделать. Я создал скрипку для этой проблемы, чтобы продемонстрировать: http://jsfiddle.net/5gESD/
Попробуй это
function setX()
{
var x='10';
document.getElementById("xx").innerHTML=x;
}
<table border="1">
<tr>
<td>Text</td>
<td id="xx"></td>
<td><button type="button" onclick="setX()">Check</button></td>
</tr>
</table>
переменная x
находится внутри function x
поэтому, когда вы устанавливаете innerHTML
сфера действия x
является function x
поэтому сначала измените имя функции и установите значение внутри функции.
вот ссылка на образец бина http://jsbin.com/ANUBeXox/1/