今天想起来玩JavaScript,根据以前一点点的基础,随便编了个程序,程序如下:
<!DOCTYPE html>
<html>
<head>
<title>表单select</title>
<script type="text/javascript" charset="utf-8">
function fuzhaoxin(a) {
var meiyouyong = a;
var a = document.getElementById('he');
var b = document.getElementById('ha');
var c = document.getElementById('hi');
if c == '+' {
alert(a.value + b.value);
}
if c == '-' {
alert(a.value - b.value);
}
if c == '×' {
alert(a.value * b.value);
}
if c == '÷' {
alert(a.value / b.value);
}
}
</script>
</head>
<body>
<input type="text" id="he" style="width: 50px">
<select id="hi">
<option>+</option>
<option>-</option>
<option>×</option>
<option>÷</option>
</select>
<input type="text" id="ha" style="width: 50px">
<button onclick="fuzhaoxin(5)">计算</button>
</body>
</html>
结果直接报错:
Uncaught SyntaxError: Unexpected identifier
错误:
if c == '+' {
alert(a.value + b.value);
}
if c == '-' {
alert(a.value - b.value);
}
if c == '×' {
alert(a.value * b.value);
}
if c == '÷' {
alert(a.value / b.value);
}
求解!!!!!!!!
1. if 的条件要用小括号包起来,也就是 if (c == '+' ) {} 这一堆
2. 你的 a b c 三个变量获取的是 DOM 对象,还需要获取各自的 value 值才可以使用,你写的 a b 已经取value了,为啥c不取value呢
3. DOM对象获取的value是string,你如果想进行四则运算需要将他们转换成number,整数可以用 parseInt() 函数转换
4. 正经的select标签的选项option中应该包含 value 属性,而不是直接用他的 text
5. 你的函数 fuzhaoxin() 参数根本用不到,你起的变量名 meiyouyong 说明你是知道的,为啥还要带着
6. 对于同一个变量的不同取值的判断你可以使用 if...else if... 这种形式,不需要多个if并列,还可以使用 switch case
javascript原生的方法
1:拿到select对象: var myselect=document.getElementById("test");
2:拿到选中项的索引:var index=myselect.selectedIndex ; // selectedIndex代表的是你所选中项的index
3:拿到选中项options的value: myselect.options[index].value;
4:拿到选中项options的text: myselect.options[index].text;
if条件要加括号啊,是javascript又不是Python!!!
<!DOCTYPE html>
<html>
<head>
<title>表单select</title>
<script type="text/javascript" charset="utf-8">
function fuzhaoxin() {
var a = document.getElementById('he');
var b = document.getElementById('ha');
var c = document.getElementById('hi');
if (c == '+') {
alert(a.value + b.value);
}
if (c == '-') {
alert(a.value - b.value);
}
if (c == '×') {
alert(a.value * b.value);
}
if (c == '÷') {
alert(a.value / b.value);
}
}
</script>
</head>
<body>
<input type="text" id="he" style="width: 50px">
<select id="hi">
<option>+</option>
<option>-</option>
<option>×</option>
<option>÷</option>
</select>
<input type="text" id="ha" style="width: 50px">
<button onclick="fuzhaoxin()">计算</button>
</body>
</html>
现在:
Accessibility
<html> element must have a lang attribute: The <html> element does not have a lang attribute
Form elements must have labels
Compatibility
'charset' meta element was not specified.
A 'viewport' meta element was not specified.
Performance
A 'cache-control' header is missing or empty.
Security
Response should include 'x-content-type-options' header.
又是怎么回事?
其实吧,你把整个script标签移到body下面就可以了,原因是浏览器执行js的时候body还没有渲染,所以获取不到元素。老手一般都会把需要获取元素的js全部放在window.addEventListener("DOMContentLoaded", function() {放这里})里面,然后吧js引用标签放在body标签上面,以获取最佳的js加载时机。如果你还有别的问题欢迎来问我,不然加个联系方式,没事唠唠嗑也可以啊。