我仍然是JS的新手,不能看到我在这个基本计算脚本上的错误
I am still new with JS and can't see my mistake for this basic calculation script
我从根据输入
的变化计算一个变量根据我有限的理解,我写了以下内容
<td>
<select name='breadstick'>
<option value='0' selected >-- Choose Breadstick --</option>
<option value='4.06'>Breadstick</option>
<option value='3.8'>Melba Toast</option>
</select>
</td>
<td>
<input id="input_bread" type="text" name="input_bread" style="width:50px;" onkeyup="do_calc3(this.value);">
</td>
<td>
<input id="bread_results" class="" readonly name="bread_results" style="width:50px;" value="" />
<script>
function do_calc3() {
var bread_choice = document.getElementById('breadstick');
var bread_weight = document.getElementById('input_bread');
var bread_r = bread_choice * bread_weight;
document.getElementById("bread_results").value = bread_r;
}
</script>
</td>
First:
您需要使用.value
属性来获取元素的值。
改变:
var bread_r = bread_choice * bread_weight;
:
var bread_r = bread_choice.value * bread_weight.value;
在原始代码中,bread_choice
和bread_weight
是对DOM元素的引用。当你试图将它们相乘时,不会得到数值结果。
您正在尝试获取它们的值(在下拉框中选择的内容和在文本框中键入的内容),因此您应该使用.value
获取它们。
它类似于你的下一行,你用.value = bread_r
设置 bread_results
元素的值。
你的<select>
元素没有id
的"面包棒",它有name
。所以把元素改成:
<select id='breadstick' name='breadstick'>
或将元素的检索更改为:
var bread_choice = document.querySelector('select[name="breadstick"]');
第三:由于您正在使用onkeyup
的内联事件处理程序,您已经传递了this.value
,这意味着文本框的值。因此,您不需要在函数中获取文本框及其值。只需添加一个参数并使用它。
function do_calc3(bread_weight) {
var bread_choice = document.getElementById('breadstick').value;
var bread_r = bread_choice * bread_weight;
document.getElementById("bread_results").value = bread_r;
}
第四:不应该使用内联事件处理程序。出于多种原因,最好在Javascript代码中处理事件。这里有一个我如何设置它的例子。(注意,onkeyup="do_calc3(this.value);"
被删除并在Javascript的window.onload
事件中完成)
function do_calc3() {
var bread_choice = document.getElementById('breadstick');
var bread_weight = this;
var bread_r = bread_choice.value * bread_weight.value;
if (isNaN(bread_r)) {
bread_r = "Invalid";
}
document.getElementById("bread_results").value = bread_r;
}
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
} else {
element["on" + eventName] = callback;
}
}
window.onload = function () {
var textbox = document.getElementById("input_bread");
addEvent(textbox, "keyup", do_calc3);
};
演示:http://jsfiddle.net/Gtven/4/
<select name='breadstick' id='breadstick'>
需要更改,因为您还没有id "breadstick"。下面是修改后的函数,以便获得元素的实际值,而不仅仅是元素的值。
function do_calc3() {
var bread_choice = document.getElementById('breadstick').value;
var bread_weight = document.getElementById('input_bread').value;
var bread_r = bread_choice * bread_weight;
document.getElementById("bread_results").value = bread_r;
}
在这里我给你一个工作小提琴:http://jsfiddle.net/TwqC6/
使用.value
:
var bread_choice = document.getElementById('breadstick').value;
var bread_weight = document.getElementById('input_bread').value;
相关文章:
- 动态创建的iframe中的window.onerror在lne 0处给出脚本错误
- 加载Chrome扩展中的脚本错误
- Jquery 脚本错误“访问被拒绝”
- 如何防止 C# Web 浏览器中的脚本错误
- 在jquery中重构“停止运行此脚本?”错误
- "停止运行脚本错误“;在IE8中拥有大量收藏
- 避免使用神秘的javascript"脚本错误”;使用cdn
- java脚本错误对象没有'不支持此属性或方法
- 禁用文本框的脚本错误显示
- 谷歌SWIFFY无法在IE9中工作-脚本错误'运行时.js'
- 悬停时IE 8中的脚本错误
- Chrome扩展:如何在全局范围内捕获/处理内容脚本错误
- Liferay主题脚本错误:未捕获语法错误:意外的标记ILLEGAL
- Java脚本错误-can't将未定义转换为对象
- j查询文件上传脚本错误
- IE 与 FireFox 中的 Java 脚本错误
- 一些脚本错误,找不到解决方案
- JavaScript var 分配一个动态可为空的值显示脚本错误
- 新鲜的MVC 3项目给了我奇怪的不显眼的验证脚本错误
- Chrome 用户脚本错误:“不安全的 JavaScript 尝试访问框架”