Функция 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/

Другие вопросы по тегам