发新贴  快速回复

请老师帮我看下,我用jq写的前面一个点击变红的功能 为何无法实现  图一是原生 图二是jq 写的 请老师帮我找下问题

吾乃常山赵子龙
2018-07-05 17:35

请老师帮我看下,我用jq写的前面一个点击变红的功能 为何无法实现  图一是原生 图二是jq 写的 请老师帮我找下问题

本帖内容针对以下视频发布:

2-生成结构绑定事件
吾乃常山赵子龙

这是源码

附件下载:
 
2018-07-05 18:03  回复本帖
zmouse

首先给你提一些问题

1. 你打包的时候少了jq的文件,但是最好也能一起提供,这样也可以减少一些不必要的问题

2. 你的代码格式,特别是代码缩进还是要注意的,否则很容易看晕,也不方便问题的解决,相信你也不希望看到这样的代码的

以上虽然跟具体的代码没有太大的关系,但是一些对解决问题有利的事情做好,那么问题解决起来也会快很多,他人也会比较乐意去解决问题,希望以上的建议能给你一些帮助,好,说问题,其实你打开浏览器的控制台是一眼能看到具体的错误提示的,

1. 首先,点击以后有提示:Invalid left-hand side in assignment,这个是说你的代码有语法上的错误,并且告诉你是114行,具体是什么呢,我们看一下代码:parent.attr('prevNode') =$(this);,为什么有语法错误的问题呢,如果没有其他明显的语法上错误的话,那就可能是你给一个不能设置指的东西赋值了,那么我们就看一下是什么,打印parent.attr('prevNode')得到结果是undefined,这样就很明显了,你给undefined赋值是有问题的,undefined是不能赋值的,因为一开始元素没有这个属性,返回的自然是undefined了,而且jq中也不能这样给attr赋值吧,应该是parent.attr('prevNode', $(this))才对。

2. 修改好了,再点击,第一下没有问题,第二下有问题了,提示错误:parent.attr(...).css is not a function,111行,parent.attr('prevNode').css('color','');这段代码,错误说是css不是一个函数,为什么呢,打印出来的结果你会发现他是一个字符串,字符串自然是没有css方法的,但是你可能会说这么是字符串呢,不是$(this)吗?这里有个问题了,attr是给元素的html上添加属性,也就是说你添加上去的数据会变成字符串$(this)自然也会转成字符串,不是你想象的对象了,那怎么解决呢,解决就是不要存在html属性上,我们可以使用jq的data()方法来存这个数据 parent.data('prevNode', $(this))

后面的具体我就不写来,你自己根据这个来,不管是jq也好还是原生也好,不管是新手还是老手,都有可能会出错,但是重要的是学习如何解决错误,编程不只是写代码……,否则是学不好的,态度决定一切!祝顺利!

2018-07-06 00:18  回复本帖
吾乃常山赵子龙

zmouse 2018-07-06 00:18发表的内容:

首先给你提一些问题

1. 你打包的时候少了jq的文件,但是最好也能一起提供,这样也可以减少一些不必要的问题

2. 你的代码格式,特别是代码缩进还是要注意的,否则很容易看晕,也不方便问题的解决,相信你也不希望看到这样的代码的

以上虽然跟具体的代码没有太大的关系,但是一些对解决问题有利的事情做好,那么问题解决起来也会快很多,他人也会比较乐意去解决问题,希望以上的建议能给你一些帮助,好,说问题,其实你打开浏览器的控制台是一眼能看到具体的错误提示的,

1. 首先,点击以后有提示:Invalid left-hand side in assignment,这个是说你的代码有语法上的错误,并且告诉你是114行,具体是什么呢,我们看一下代码:parent.attr('prevNode') =$(this);,为什么有语法错误的问题呢,如果没有其他明显的语法上错误的话,那就可能是你给一个不能设置指的东西赋值了,那么我们就看一下是什么,打印parent.attr('prevNode')得到结果是undefined,这样就很明显了,你给undefined赋值是有问题的,undefined是不能赋值的,因为一开始元素没有这个属性,返回的自然是undefined了,而且jq中也不能这样给attr赋值吧,应该是parent.attr('prevNode', $(this))才对。

2. 修改好了,再点击,第一下没有问题,第二下有问题了,提示错误:parent.attr(...).css is not a function,111行,parent.attr('prevNode').css('color','');这段代码,错误说是css不是一个函数,为什么呢,打印出来的结果你会发现他是一个字符串,字符串自然是没有css方法的,但是你可能会说这么是字符串呢,不是$(this)吗?这里有个问题了,attr是给元素的html上添加属性,也就是说你添加上去的数据会变成字符串$(this)自然也会转成字符串,不是你想象的对象了,那怎么解决呢,解决就是不要存在html属性上,我们可以使用jq的data()方法来存这个数据 parent.data('prevNode', $(this))

后面的具体我就不写来,你自己根据这个来,不管是jq也好还是原生也好,不管是新手还是老手,都有可能会出错,但是重要的是学习如何解决错误,编程不只是写代码……,否则是学不好的,态度决定一切!祝顺利!

万分感谢老师百忙之中给我解答 谢谢
2018-07-06 08:55  回复本帖
登录 后才可以发表回复