页面加载时无法自动为a标签赋文字
javascript吧
全部回复
仅看楼主
level 1
我这个f方法是获取cookie的值,并在页面加载的时候去动态部署到表格中的a标签里,然后的话我把这个方法设置为页面加载时即执行的方法,并且在方法中加入了alert,发现cookie正常获取,但是不会加到a标签里,随后我用一个button把点击事件设置为f方法,一切正常,这是哪错了
2021年01月29日 05点01分 1
level 13
如果用按钮正常的话,那么是你这个函数的执行时机不对。你可能并不清楚网页加载的顺序。
浏览器要加载一张网页首先要将这张网页处理成一个结构树,要达成这个目的,浏览器会从头到尾读取网页文件,每读取到一个标签,就会将其添加到结构树中。在这个过程中如果读取到脚本,浏览器会马上加载这个脚本然后等待它执行完毕,在此之后才会继续读取网页剩下的内容。脚本在执行的时候是获取不到网页上未加载的内容的,所以如果脚本是在网页被读取的时候执行,那么很可能会因为加载顺序的问题,找不到要操作的目标而失败。
要解决这个问题,你需要了解如何调整脚本,或者脚本中的函数的执行时机。
有三种方法:
一、调整脚本在网页中的顺序。既然网页是从上到下顺序读取的,那么只要把脚本放到网页的最后就可以保证其他的内容先被读取。但是不推荐这样。
二、给脚本标签加上 defer 属性。defer 属性可以延后整个脚本的执行,不论脚本标签在网页中处于什么位置,它会等到网页上的内容都添加到了结构树之后再执行。这样可以保证可以获取到网页上的其他内容。但是不是所有浏览器都完美支持 defer,所以你要根据你针对的浏览器慎重决定要不要用。
三、利用 DOM 事件调整执行时机。你可以在脚本里把某些代码放到一个函数里,或者直接用要调用的函数,使用或监听window对象的load的事件,或者dom的文档结构树加载完成的事件,然后调用你的函数。
2021年02月01日 04点02分 4
谢谢大佬的解决方案,问题已经解决啦
2021年02月12日 13点02分
level 12
你说把f()放button点击事件 点击就正常
而放加载就不行了?
那你是怎么加载f()调用的
既然你有用jquery
不知你有没有 这样写
$(function() {
f(); // dom树加载完成时执行 f()
});
参考楼上大佬的说的 我想应该是这原因吧?
2021年02月01日 05点02分 5
level 1
如果点击测试没有问题的话,页面在加载时js执行顺序问题。
相对于遍历获取a标签设置a标签的href值,更建议使用字符模板创建标签并添加好属性再放入父容器中。
2021年02月01日 09点02分 6
1