0

我是这个论坛的新手,我希望能够从我的 html 输入中获取一个值到 javascript。现在我有这个代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PWS</title>
</head>

<body bgcolor="#009933" text="#FFFFFF">
<H1 align="center">PWS Julia en Sophie</H1>
<hr>
<br>

<strong>DOUCHE</strong>
<table>
    <tr>
    <td>Temperatuur</td>
    <td><input type="text" name="dtemp" onClick="calculateTotal()" /></td>
    </tr>
    <tr>
    <td>Tijd</td>
    <td><input type="text" name="dtijd" onClick="calculateTotal()" /></td>
    </tr>
    <tr>
    <td>Hoe vaak per week</td>
    <td><input type="text" name="dfreq" onClick="calculateTotal()" /></td>
    </tr>
</table>

<br>
<strong>BAD</strong>
<table>
    <tr>
    <td>Temperatuur</td>
    <td><input type="text" name="btemp" onClick="calculateTotal()" /></td>
    </tr>
    </tr>
    <tr>
    <td>Hoe vaak per week</td>
    <td><input type="text" name="bfreq" onClick="calculateTotal()" /></td>
    </tr>
</table>

<script type="text/javascript">
    var dTemp = document.getElementsByName("dtemp").value;
    document.write(dTemp);
</script>

显然,它不起作用。因为 dTemp 值未定义。任何人都可以帮助我,提前谢谢,鲍勃

4

3 回答 3

3

document.getElementsByName返回一个数组,所以你必须引用元素的位置:

var dTemp = document.getElementsByName("dtemp")[0].value;

我还建议为您的输入提供 ID,因为在您的情况下,每个名称似乎都是唯一的,这样您就可以使用document.getElementById

于 2013-10-14T19:51:20.910 回答
0

1)您需要索引 的结果getElementsByName,如其他答案中所述;附加[0]document.getElementsByName("dtemp").

2)您不能document.write在页面加载后执行的代码中使用。它将用书面内容替换当前文档。改为写入元素。

3)您根本没有定义功能calculateTotal。将您的 JavaScript 代码包装在一个函数中,例如

<div id=result></div>
<script>
function calculateTotal() {
    var dTemp = document.getElementsByName("dtemp")[0].value;
    document.getElementById('result').innerHTML = dTemp; }
</script>

4)你还有很长的路要走,因为现在你的代码没有尝试计算任何东西,你几乎不应该onclick在一个input元素上使用来开始计算(而是onchange在它上面,或者onclick在一个单独的按钮元素上)。你应该读一本好的 JavaScript 入门书,真的。

于 2013-10-14T20:31:53.807 回答
0

document.getElementsByName("dtemp")将为您提供元素数组,逐个遍历并从中获取值。

var elements = document.getElementsByName("dtemp");
var firstValue = elements[0].value;
于 2013-10-14T19:53:33.517 回答