JavaScript编程时遇到的问题,求解!!!

今天想起来玩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>

现在:

  1. Accessibility

    1. 1

      <html> element must have a lang attribute: The <html> element does not have a lang attribute

    2. 3

      Form elements must have labels

  2. Compatibility

    1. 1

      'charset' meta element was not specified.

    2. 1

      A 'viewport' meta element was not specified.

  3. Performance

    1. 1

      A 'cache-control' header is missing or empty.

  4. Security

    1. 1

      Response should include 'x-content-type-options' header.

又是怎么回事?

其实吧,你把整个script标签移到body下面就可以了,原因是浏览器执行js的时候body还没有渲染,所以获取不到元素。老手一般都会把需要获取元素的js全部放在window.addEventListener("DOMContentLoaded", function() {放这里})里面,然后吧js引用标签放在body标签上面,以获取最佳的js加载时机。如果你还有别的问题欢迎来问我,不然加个联系方式,没事唠唠嗑也可以啊。