在阅读表单输入后写回HTML;t工作(Javascript)
Writing back to HTML after reading form input doesn't work (Javascript)?
我尝试按照W3Schools上的简单示例,使用纯Javascript从表单中读取值并写回HTML页面。
代码请参考JSFiddle:
<body>
<form action="index.javascript.html" onsubmit="omzetten()">
<fieldset>
<legend>Omzetten naar decimaal stelsel:</legend>
<p class="loginlabel">Getal</p>
<input type="text" id="getal" class="loginfield" />
</fieldset>
<br/>
<input type="button" id="omzetten" value="Omzetten" />
</form>
<p id="antwoord">[empty]</p>
</body>
在文件app_javascripts.js的子目录/js中(在标题中引用):
function omzetten() {
var getal = document.getElementById("getal");
var bronstelsel = 2;
var antwoord = 0;
var j = 0;
for (var i = getal.length - 1; i >= 0; i--) {
antwoord += getal.substr(i, 1) * Math.pow(bronstelsel, j);
j++;
}
var antwoordText = document.getElementById("antwoord");
antwoordText.innerHTML = antwoord;
}
为什么结果("antwoord")没有显示在id为"antwood"的段落元素中?
您有几个问题。
首先,您需要将输入更改为type="submit"
,以便它将调用表单的onsubmit
处理程序。另一个选项是将函数调用放在按钮的onclick
属性中。如果您没有将表单提交到服务器,那么实际上不需要输入位于<form>
中。
其次,您需要将return false;
添加到onsubmit
中,这样它就不会实际提交表单
第三,您为该函数指定了与提交按钮的id
相同的名称。这样做的问题是ID会自动转换为全局变量,从而替换包含函数的全局变量。在下面的代码中,我只是删除了ID,因为它没有用于任何用途。
第四,要从文本字段中获取输入,需要获取其.value
属性:
var getal = document.getElementById("getal").value;
特别是对于小提琴,你需要从左上角的菜单中选择一个"无包裹"选项。否则,所有的Javascript都在window.onload
函数内,并且函数不在内联Javascript在标记中使用的全局范围内。
function omzetten() {
// inputRead:
var getal = document.getElementById("getal").value;
var bronstelsel = 2;
var antwoord = 0;
var j = 0;
for (var i = getal.length - 1; i >= 0; i--) {
antwoord += getal.substr(i, 1) * Math.pow(bronstelsel, j);
j++;
}
var antwoordText = document.getElementById("antwoord");
antwoordText.innerHTML = antwoord;
}
<form action="index.javascript.html" onsubmit="omzetten(); return false;">
<fieldset>
<legend>Omzetten naar decimaal stelsel:</legend>
<p class="loginlabel">Getal</p>
<input type="text" id="getal" class="loginfield" />
</fieldset>
<br/>
<input type="submit" value="Omzetten" />
</form>
<p id="antwoord">[empty]</p>
尝试将按钮更改为提交:
<input type="submit" id="omzetten" value="Omzetten" />
var getal = document.getElementById("getal");
返回一个Element。但是,您将元素视为字符串。
使用
var getal = document.getElementById("getal").value;
以从"getal"元素中检索值。
此外,您的函数从不执行,因为您的表单从不提交。您需要"提交"类型的输入。
提交表单后更新页面可能不是您想要的。你可能想使用点击按钮而不是提交表格。
这是一个更新的Fiddle。我从onsubmit改为onclick(在按钮上),修复了上面描述的.value问题,并更改了函数名称,因为它与按钮ID冲突。
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 变量只能在函数中局部工作,不能全局工作-Javascript
- onClick按钮不工作javascript/php/jquery mobile
- 点击骰子赢得't工作(javascript)
- for循环,if else不工作Javascript
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 可以'没有一个函数可以工作——Javascript
- OnFocus 不是工作 JavaScript HTML;不显示对焦时计算和按钮单击时
- 从 iframe 访问主站点中的工作 JavaScript
- 对于在循环中无法按预期工作 JavaScript
- 在阅读表单输入后写回HTML;t工作(Javascript)
- 复选框单击有效,取消选中复选框不工作Javascript
- 代码在Codepen中工作,而不是在浏览器中工作:JavaScript在鼠标滚轮上缩放SVG
- 当用户在这个工作javascript注释框中提交注释时,您将如何添加用户图像和名称
- 向Wordpress添加工作Javascript谷歌地图代码
- 确认/重定向功能不工作-javascript
- 当/patt/版本工作时,为什么RegExp版本不工作?(Javascript)
- Firefox加载项按钮代码不工作-Javascript
- 计算器功能不工作- Javascript
- 将工作JavaScript对象序列化为仅保留属性的JSON