作者asdfg5247 (天天)
看板Web_Design
标题[问题] 用js刻轮播时遇到的问题
时间Tue May 22 20:49:10 2018
大家好,目前小弟正在学用JS刻轮播
使用的教学是采用这个网站教学的
https://goo.gl/LJS1e6
但是当照他所写的去做时,发现到最後一张图片时并没有往回走
代码几乎跟他的一模一样,毕竟是参考他的
目前有想过将代码改成
function showtime() {
timer = setInterval(function () {
count++;
banner_ul.style.transform = "translate(" + -1215 * count
+ "px)";
if (count > banner_li.length) {
count = 0;
banner_ul.style.transform = "translate(" + 0 + "px)";
}
},3000);
直接到要超过最後一张图片时,将整个ul变成0px
但是还是没有触发if事件orz
因为卡很久了,想请问如果是他的版本,为什麽第二个if并没有触发呢?
如果是我的版本,是不是要弄for循环,然後以if来判断最後一张图片会比较好?
--
人生若只如初见,
何事秋风悲画扇。
等闲变却故人心,
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.165.91.228
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1526993355.A.7A3.html
1F:→ Rinorune: 可以用console.log去侦错 看哪里跟你预期不同 05/22 21:21
可是如果是已知的地方出错,却不知道怎麽修改呢QQ?
因为目前我可以看的懂,却还不会写,当然一些简单的还OK!
※ 编辑: asdfg5247 (1.165.91.228), 05/22/2018 22:25:50
2F:推 chen5252: 我照他的code贴去codepen是可以正常轮播,到最後一张也 05/22 23:23
3F:→ chen5252: 会往回走耶 05/22 23:23
真的假的,可是我几乎没有少掉任何cod,完全照抄却不行耶!也太奇怪
※ 编辑: asdfg5247 (1.165.91.228), 05/22/2018 23:28:34
4F:推 lin009: 你有把 code 放到线上吗~? 贴上来大家比较好 debug~ 05/22 23:32
5F:→ chen5252: 没看到code无法解,找个地方贴出来大家也才可以帮你看看 05/22 23:38
6F:→ chen5252: 问题在哪 05/22 23:38
好的我放了!
https://jsfiddle.net/admo378z/1/
先谢谢各位大大的帮忙QQ
※ 编辑: asdfg5247 (1.165.91.228), 05/23/2018 12:50:47
7F:推 chen5252: 你的banner_li 没有抓到东西 05/23 14:57
8F:推 chen5252: 应该是说你的banner_li到showtime就没东西了 05/23 15:16
9F:推 chen5252: 范例是将整个showtime包在.onload里面,你把它拆成两个 05/23 15:28
10F:→ chen5252: ,到了showtime里面才会抓不到你在onload里宣告的元素 05/23 15:28
11F:推 lin009: 这样不算完全照抄吧 XD 05/24 13:46
13F:→ lin009: 求 05/24 13:47
14F:→ lin009: 除了 chen 大说的问题外,ul 的 selector 也写错了,另外 05/24 13:48
15F:→ lin009: isgo 一直都是 false 05/24 13:48
对!我一开始是知道说banner_ul banner_li没抓到值,但是我想说前面有windows.omload
没看到前面的function,可是我想请问,为什麽要windows.onload呢?如果只打
var banner_ul = document.getelementbyID的话呢?有试过但是好像无法,不知道为什麽
※ 编辑: asdfg5247 (1.165.91.228), 05/24/2018 21:22:48
16F:推 lin009: 因为你把 js 放在 head 里面,如果没写 onload 的话,浏览 05/24 22:12
17F:→ lin009: 器会先解析这段 script,然後才读到你写的那些 banner_ul 05/24 22:12
18F:→ lin009: 等等的元件 05/24 22:12
19F:→ lin009: 总之浏览器在执行这段 script 时,根本还没有这些 element 05/24 22:13
20F:→ lin009: ,所以就读不到了 05/24 22:13
21F:→ lin009: 通常有几种解法: 05/24 22:18
22F:→ lin009: 1. 写 onload,叫浏览器等 window 都准备好後再跑这段 05/24 22:18
23F:→ lin009: 2. 把 script 放在 body 的结束 tag 前面,这样确定浏览器 05/24 22:18
24F:→ lin009: 会先读到 其他 html 05/24 22:18
25F:→ lin009: 3. script tag 上可以设定其他 attr 让它晚点执行 05/24 22:18
26F:推 SeanGGG: 改动UI的script大部分建议放在</body>前 05/24 22:55
一整个恍然大悟!原本我以为放body跟放head没有差别!谢谢lin大跟chen大、GGG大
※ 编辑: asdfg5247 (125.224.1.195), 05/25/2018 10:12:21