我上火了,快帮我看一下
<!DOCTYPE html> <html> <head> <title> 事件</title> </head> <body> <input type='text' id='num1' /> <select id='operate'> <option value='+'>+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type='text' id='num2' /> <input type='button' value=' = ' onclick="count()" /> <input type='text' id='result' /> <script type="text/javascript"> function count() { var num1=document.querySelector('#num1'), sign=document.querySelectorAll('#operate'), num2=document.querySelector('#num2'), result=document.querySelector('#result'), button=document.querySeletor('button'); button.onclick:function add(num1,num2){ return +num1.value++num2.value; } button.onclick:function sub(num1,num2){ return num1.value-num2.value; } button.onclick:function multiple(num1,num2){ return num1.value*num2.value; } button.onclick:function div(num1,num2){ return num1.value/num2.value; } switch(sign.value){ case '+':result.value=add(); break; case '-':result.value=sub(); break; case '*':result.value=multiple(); break; case '/':result.value=div(); break; } } </script> </body> </html>
正在回答 回答被采纳积分+1
同学你好,因为时间长了,肯定会有遗忘的,但是不要着急,这些都是正常的现象,老师也非常理解。为了帮助同学能够更好的学习,给同学一个学习的建议吧
如果是以前学过的知识遗忘了,建议同学去复习一下知识。前面讲解的知识都是为后面的知识作为铺垫的哦。所以要多复习。
如果是现阶段的知识没有理解,可以多看几遍视频,多敲几遍代码,如果还有不能理解的,可以在问答区进行提问,老师会帮助同学解答哒。
老师对同学的问题解答之后,因为老师讲解的比较详细,所以文字会比较多,同学要有耐心去理解每一句,每一个知识点。这样才能够提升自己的技术哦
如果还有其他疑问,为了高效的为同学解答,可以新建问答进行提问哦。
如果帮助到了你,欢迎采纳~祝学习愉快~
你好同学,这位同学语法和逻辑都是对的,肯定没有问题啊。老师上传回复,给你截图讲解的对象的语法同学看了吗?并且给出视频地址同学复习了吗?
再看看这位同学的语法,就是定义的对象,对象中定义的方法:
而同学这里是为一个元素绑定事件,后面是事件要执行的内容,所以需要使用等号。这个完全是两码事。
因为这位同学是在对象中的方法里面计算的结果,所以后面循环的时候,使用的就是对象调用方法(也是固定的语法)
而你的代码中本身是想要绑定一个事件,事件触发的时候,后面的函数就会执行了, 所以给事件后面加函数名没有任何意义,并且事件后面的函数只能传递event对象,你这里传递两个参数也毫无意义。
还有你的代码没有button这个标签,但是却使用它获取了。那么什么都获取不到。而且获取select,直接使用querySelector就行,返回的就是一个dom对象。使用querySelectorAll返回的是一个类数组
这位同学就直接使用getElementById,这个方法返回的就是dom对象。并且获取的id名在html中都有定义:
这位同学的代码中,函数包裹了循环
但你的代码中包裹了全部的代码:
如下地方加一个空格,不然的话会被当成自加运算符了哦。
另外,老师上次也说了,因为你现在基础底子是比较差的,语法不熟悉,所以你会觉得和老师和其他人写的的差不多为啥就是不行。希望同学能够认真听取老师的建议,先把前面的课程复习一下,真正学会了再去做这个练习。
也希望同学暂时不要再和视频或者其他同学的进行比较了,因为你语法不熟悉的话,可能还是会一知半解,这样学习效率太慢了。即使明白了当下的,但是你基础不好学习后面的也是寸步难行。
所以把视频复习一下,学会了。再把代码一行一行的认真去思考,会非常容易理解的。
祝学习愉快,望采纳。
你好同学,解答如下:
1.视频中是对象中保存属性与属性值的语法,这个在前面课程讲解过(如下)。而同学这里是给元素绑定一个点击事件,是一条语句,这个都是固定的语法。
如下视频的地址:https://class.imooc.com/lesson/791#mid=19886
2.因为你把循环放在了点击事件外边哦,循环需要在点击事件触发的时候执行,这样才能给等号右侧的输入框设置结果。所以需要封装成函数,在事件中调用此函数。如果不封装成函数,就直接把循环那一部分代码放在外部。都一样
不理解你说的黑盒子是什么,代码不在函数中包裹,才叫暴露。就是为了让代码不暴露在外部才会使用函数封装的。并且这里涉及不到暴露不暴露的问题,如果不封装成函数,就要把代码放在事件中。因为点击等号的时候,需要执行这个循环来设置结果。
同学在写的时候,就会觉得和老师的差不多为啥就是不行,实际上是你对语法不熟悉导致的。老师给你两个建议,希望能够帮到你更好的学习好知识:
把前面的课程复习一下,课程中的知识点可以做一下笔记。因为长时间不看肯定会忘记,有了笔记隔一段时间复习一下,加深印象。
学习的时候也不能光看不练。课程中讲解的一定要多敲几遍。程序员最重要的还是要写代码哦。等你把课程中的案例练习熟练后,再来做练习或者作业,这样才能巩固。如果课程中的例子哪里不明白,在问答区提问,老师会帮你解答的哦。
祝学习愉快,望采纳。
你好同学,老师教你如何查找并解决问题。如果遇到问题,可以按F12查看控制台是否有报错:
上面报错是说冒号是不期望的标记,这种情况就是语法用错了。点击报错后面的文件名即可跳到报错的代码:
很明显绑定点击事件,后面使用等号,但是同学使用了冒号。肯定会报错哦。改之后还不对就继续查看控制台报错,这里老师就不一一截图了,因为问题比较多,老师把改好的代码给你,参考改一下哦。
<!DOCTYPE html>
<html>
<head>
<title> 事件</title>
</head>
<body>
<input type='text' id='num1' />
<select id='operate'>
<option value='+'>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type='text' id='num2' />
<!--value后面的属性值,=前后空格删掉 这里加一个id onclick="count()"-->
<input type='button' value='=' id="button" />
<input type='text' id='result' />
<script type="text/javascript">
function count() {
var num1 = document.querySelector('#num1'),
// querySelectorAll返回的是一个类数组,如下使用querySelector
sign = document.querySelector('#operate'),
num2 = document.querySelector('#num2'),
result = document.querySelector('#result'),
// 1.使用标签名获取,但是你的代码中并没有button这个标签,按钮用的是input标签哦
// 2.querySelector之前拼的不对
// button=document.querySeletor('button');
button = document.querySelector('#button');
// 下面的几个事件有如下几个问题:
//1.点击事件后面的是事件处理函数,即点击事件触发才会执行的。后面给它加函数名,并在循环中自动调用逻辑不对哦。
// 2事件处理函数中,参数只能传递event对象。你传递参数会被当成event对象,所以不要传递参数哦。
// 3.点击等于号的时候,应该是给最后的输入框设置结果,即要把设置result放在事件中。你把result.value 设置结果放在事件外部,点击的时候也不会执行。
// 4.你给button设置了4个点击事件,那么前三个会被覆盖的。
button.onclick = function() {
// 点击的时候把当前 运算符传递给函数
resultFn(sign.value)
console.log(sign)
// return +num1.value++num2.value;
}
// button.onclick = function() {
// return num1.value - num2.value;
// }
// button.onclick = function() {
// return num1.value * num2.value;
// }
// button.onclick = function() {
// return num1.value / num2.value;
// }
function resultFn(sign) {
switch (sign) {
case '+':
result.value=parseInt(num1.value)+parseInt(num2.value);
break;
case '-':
result.value=num1.value - num2.value;
break;
case '*':
result.value=num1.value * num2.value;
break;
case '/':
result.value=num1.value / num2.value;
break;
}
}
}
// 所有的代码都放在了一个函数里面,当你点击等于号的时候,执行执行了这个代码里面所有的内容
// 例如像里面的事件,点击的时候,只是为按钮绑定了事件,那么再次点击按钮的时候,才触发事件
// 自动调用,为按钮绑定事件
count()
</script>
</body>
</html>
另外,从代码可以看出,同学基础掌握的还不是很好,建议复习一下课程,把课程案例多练习几遍,以巩固学过的知识。课程中有不懂的,可以在问答区提问,老师会为你讲解。把课程案例弄懂了,再来练习编程题。这一块逻辑有一点多,做不好也很正常。学习不要着急与浮躁,练习的时候踏实认真一点。加油!
祝学习愉快,望采纳。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星