新手求问,关于js function调用的问题

目前,我在写js代码时,将js文件分为两类:一是所有页面都要调用一些function的公共文档;二是页面单独要用到的功能文档。

我在公共文档里写了window.onload=function(){};在功能文档里针对每个功能写一个function,然后在HTML要用到的地方调用如:onclick="XXX(){}",但是有些是多个标签用到同一个功能如下方代码:


`<ul>

<li>111</li>

<li>222</li>

<li>333</li>

<li>444</li>

</ul>`


<script>

var test=document.getElementByTagName('li');

for (j = 0; j < test.length; j++) {

        test[i].onclick=function(){}

</script>

在这种情况下,需要把代码写成一个function吗?如果写成了function,难道要给每个li标签都麻烦的调用吗?而且引入公共文档里面已经有一个window.onload了。如果不写functon的话有会显得代码很乱。


说了这么多,其实就是想知道大家在写js代码时是如何分类?在已经有一个wiondow.onload的情况下怎么调用其他的function?


慕斯709654
浏览 495回答 4
4回答

aluckdog

对于监听 ul 下所有 li 这种需求,一般是监听 ul 的事件,然后通过 event.target 之类的方式去获取真正触发事件的元素,这个涉及 DOM 的事件机制,你可以了解一下。一般来说不写 window.onload 这种形式,我个人是这样的:(function(window, document, undefined) {&nbsp; &nbsp; ...})(window, document, undefined)很多规范写法都是要慢慢积累的,你也可以直接看各网站那些未被混淆的 js 文件来快速了解。

料青山看我应如是

那个for循环用事件委托写法就好了var Ul = document.getElementById("ul");  Ul.onclick = function(ev){    var ev = ev || window.event;    var target = ev.target || ev.srcElement;    if(target.nodeName.toLowerCase() == 'li'){        &nbsp; &nbsp; alert(123);        &nbsp; &nbsp; <!--你的function-->    }  }

慕斯王

不用for遍历,直接例如这样:$('ul>li').bindclick..&nbsp;$('ul>li')就代表ul下所有li了。你百度一下“Js选择器”,基础多学一下。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript