Javascript函数不工作+;变量

Javascript函数不工作+;变量,javascript,var,Javascript,Var,我是javascript新手,我正在尝试在html中构建一个脚本,创建一个变量x,然后将其写入表中的一个单元格。这是我想到的,但它不起作用 <table border="1"> <tr> <td>Text</td> <td id="xx"></td> <td><button type="button" onclick="x()">Check<

我是javascript新手,我正在尝试在html中构建一个脚本,创建一个变量x,然后将其写入表中的一个单元格。这是我想到的,但它不起作用

<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>
就在上面

然后我补充说

<p>
    <script>
        document.write(x + "<br>");
        document.write(y);
    </script>
</p>

部分错误,因为我无法正确验证。

您正在将内容写入函数外部的表格单元格,使其在页面加载时立即运行。当时变量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小提琴。这样,对帮助感兴趣的人可以更容易地看到你在做什么。我已经为这个问题创建了一个提琴来演示:

试试这个

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>
函数setX()
{
var x='10';
document.getElementById(“xx”).innerHTML=x;
}
正文
检查
变量
x
的作用域在
函数x
中,因此当您设置
innerHTML
时,
x
的作用域是
函数x

因此,首先更改函数名并在函数内设置值


这是示例bin链接

首先,不要让函数名与变量名相同,因为函数名实际上是变量。所以不要使用函数x(),然后使用var x=好的建议,尽管这不是本例中问题的原因,因为变量x是在函数x的范围内定义的。。。但在这种情况下,这似乎是运气多于智慧。我在这里键入时只输入了x-它们有其他名称…实际上,变量在函数中声明,因此它们不在同一范围内…那么我如何将您指定的“固定值”更改为idec值?与我所做的相反,粘贴idec.device\u read()调用我建议的“test”值。所以我使用您的第三组代码,并用我的代码替换test?带或不带“”?
function writeDeviceValueToCell() {
    var deviceValue = 'test';
    document.getElementById("xx").innerHTML = deviceValue;
}
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>