关于作业问题

来源:3-10 作业题

weixin_慕的地5241954

2019-10-08 23:38:55

1、只有在下拉菜单上移出鼠标下拉菜单才可以消失,在标题( 我的IMOOC)上移出不会消失,用户体验不好。

建议:给标题和下拉列表添加一个共同的父级,把移入移出事件绑定到父级上。

这样绑定肯定要加一个div,会使原有css样式破坏,有更好的解决方案吗?

2、因为代码具有灵活性,这几种方法都是可以实现效果的。不管使用哪种能够实现就可以了,index1中第三种方式好些,因为进行了封装,其他地方如果需要的话,也是可以直接使用的。第三种也很常用。我的第4种方法是把正则判断封装一个函数,把显示内容封装一个函数,跟第三种比,哪种常用呢?

//第三种方法,pattern, ele,a, b, c这5个参数可以放在一个大对象里面,这个对象应该如何写,应该如何
传参呢?能写一段代码我看看嘛?
function abc(pattern, ele, a, b, c){
    var reg = pattern;
    reg.exec(ele.value) ? a.innerHTML = b : a.innerHTML = c;
    reg.exec(ele.value) ? a.style.color = 'green' : a.style.color = 'red'; 
    console.log(this.value)
}
id.username.onblur = function(){
    abc(pattern.usernameReg, id.username, showRlueSpans[0], showRlueSpansRight[0], showRlueSpansError[0])
}
//第四种方法
// 这种写法正则验证不了,打印的值是空?因为如果只是调用函数,只会执行一遍,而onblur方法中需要的
是 pe(pattern, ele)函数中的reg.exec(ele.value)值,而值需要用return来返回。
// 下面是正则验证的封装
function pe(pattern, ele){
    var reg = pattern;
    return reg.exec(ele.value);   
}
// 验证正确时展示的内容和样式函数封装
function showRlueSpansRight(showRlueSpans, showRlueSpansRight){
    showRlueSpans.innerHTML = showRlueSpansRight;
    showRlueSpans.style.color = 'green';
}
// 验证错误时展示的内容和样式函数封装
function showRlueSpansError(showRlueSpans, showRlueSpansError){
    showRlueSpans.innerHTML = showRlueSpansError;
    showRlueSpans.style.color = 'red';
}
id.username.onblur = function(){
    pe(pattern.usernameReg, id.username)?showRlueSpansRight(id.showRlueSpans[0], showRlue.showRlueSpansRight[0]):showRlueSpansError(id.showRlueSpans[0], showRlue.showRlueSpansError[0]);
}

3、同学想要怎么封装呢?可以详细描述下,其实同学的写法已经很简便了

我上面封装正则的方法常用吗?有没有什么缺陷?

写回答

5回答

好帮手慕言

2019-10-10

同学你好,是想要下方截图中的效果嘛?

http://img.mukewang.com/climg/5d9e91f7094b261f14680361.jpg

如果还有问题的话,建议新建问答哦

如果帮助到了你,欢迎采纳~祝学习愉快~

0

好帮手慕言

2019-10-09

同学你好,在同学的代码中已经封装了一个名为abc函数了呀。

如果还有问题的话,为了高效的为同学解答,建议新建一个问答进行提问哦

祝学习愉快~

0
heixin_慕的地5241954
h 不好意思,最后一个问题,我的意思是abc函数不用传5个参数,只传一个对象参数还怎么写,因为前面有老师说过,参数传递最好不要超过2个
h019-10-09
共1条回复

好帮手慕言

2019-10-09

pattern, ele, a, b, c是形参,不用放到对象里面,直接写就可以了。实参可以放到一个对象里面

http://img.mukewang.com/climg/5d9da80d09bb79aa13530413.jpg

如果帮助到了你,欢迎采纳~祝学习愉快~

0
heixin_慕的地5241954
h 封装函数abc怎么写呢?
h019-10-09
共1条回复

好帮手慕言

2019-10-09

同学你好,第四种方法同学是对正则进行封装,目的是在需要时在多处调用,如果与后端有交互,在使用ajax时会把用户名等信息发送到后端,后端会进行一些操作,比如查看用户名是否已经注册过了,后端处理完之后会返回一些数据,告诉我们是否可以正常注册。和我们封装的正则没有很大的关系哦,我们的正则是判断用户输入的内容格式是否符合我们规定的要求。同学可以先了解一下,关于ajax在后面有讲解。

http://img.mukewang.com/climg/5d9d9ad10998a16f12900716.jpg

如果帮助到了你,欢迎采纳~祝学习愉快~

0
heixin_慕的地5241954
h 第三种方法,pattern, ele,a, b, c这5个参数可以放在一个大对象里面,这个对象应该如何写,应该如何传参呢?能写一段代码我看看嘛?
h019-10-09
共2条回复

好帮手慕言

2019-10-09

同学你好,

1、添加一个共同的父级是最简单常用的方式。调整样式就可以了。

2、第四种方式也不错。一般来说封装成函数,有利于多处调用,是很好的一种方式。

3、因为每个人书写代码的风格是不同的,因此常不常用需要根据自己来判断的哦。经过测试,没有发现缺陷。

从同学的作业中就可以看出同学是一个愿意思考和动手去实现的人,这点是非常棒的,一定要保持住呦。加油~

如果帮助到了你,欢迎采纳~祝学习愉快~


0
heixin_慕的地5241954
h 我想了一下,觉得第四种方法好一点,因为pe(pattern, ele)函数调用,return reg.exec(ele.value); 的值可以用一个jQuery对象属性接收,然后方便向服务器发送数据进行ajax请求,不知道我这样理解对不对?
h019-10-09
共1条回复

0 学习 · 14456 问题

查看课程