javascript--枚举算法实现

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        //枚举算法--》穷举算法
        window.onload=function  () {
            var aA=document.getElementsByTagName(‘a‘);//get A
            var oUl=document.getElementById(‘uli‘);//get ul
            var aLi=document.getElementsByTagName(‘li‘);//get li

            for (var i = 0; i < aA.length; i++) {//给A加入点击事件
                aA[i].onclick=function  () {//给每一个里加入点击事件
                    if(mj(this.innerHTML)){//没有同样的
                        var oLi=document.createElement(‘li‘);
                        oLi.innerHTML=this.innerHTML;
                        if(aLi[0]){
                            oUl.appendChild(oLi);//第一次显
                        }else{
                            oUl.insertBefore(oLi, aLi[0])//仅仅要点击即显示在最前面
                        }

                    }else{//有同样的。不再显示
                        mj2(this.innerHTML);
                    }
                };
            };
            function mj (text) {//推断是否存在相通的Li
                var result=true;
                for (var i = 0; i < aLi.length; i++) {
                    if(aLi[i].innerHTML==text){
                        result=false;
                    }
                };

                return result;
            }

            function mj2 (text) {//存在同样的li时。将当前的Li加入在第一个位置!
                for (var i = 0; i < aLi.length; i++) {
                    if(aLi[i].innerHTML==text){
                        oUl.insertBefore(aLi[i], aLi[0])
                    }
                };

            }
        }
    </script>
</head>
<body>
    <a href="javascript:;">北京</a>
    <a href="javascript:;">上海</a>
    <a href="javascript:;">杭州</a>
    <a href="javascript:;">天津</a>
    <a href="javascript:;">武汉</a>
    <a href="javascript:;">长沙</a>
    <a href="javascript:;">广州</a>
    <a href="javascript:;">神州</a>

    <ul id="uli">
    </ul>

</body>
</html>

1、点击当中一个。显示在最前面!

2、当点击第二次的时候。不再显示!!

时间: 2024-11-02 22:24:13

javascript--枚举算法实现的相关文章

FCC的javascript初级算法题解答

FCC上的javascript基础算法题 前一阵子做的基础算法题,感觉做完后收获还蛮大的,现在将自己的做法总结出来,供大家参考讨论.基本上做到尽量简短有效,但有些算法还可以继续简化,比如第七题若采用正则表达式来匹配,则一行代码就可以完成需求.欢迎大家提出不同解法.末尾有FCC的链接,感兴趣的同学可以去做一做. 1.翻转字符串 function reverseString(str) { var arr=str.split(""); str=arr.reverse().join("

枚举算法

1.枚举法的基本思想: 根据实际问题设计多重循环,一一枚举所有可能的状态,并用问题给定的约束条件检验哪些状态是需要的,哪些状态是不需要的.能使命题成立的状态,即为其解.虽然枚举法本质上属于搜索策略,但是它与后面讲的回溯法或宽度优先搜索有所不同. 2.枚举条件: ①可预先确定每个状态的元素个数n.如百钱买百鸡问题,3文钱一只鸡的状态元素个数可预先确定: ②可预先确定每个状态元素a1,a2,…,an的值域. 3.框架结构: 设a11为状态元素ai的最小值:aik为状态元素ai的最大值(1<=i<=

枚举算法001

Hello!各位小伙伴们大家好,我是苦瓜,今天我来带大家一起进入算法的世界!我们先从枚举算法开始学习哦! 首先,我给大家普及一下枚举算法的基本概念,枚举算法就是将所有可能的结果进行逐个枚举尝试,进而找到适合条件的数据.说白一点就是利用多重 for 循环将所有的可能进行遍历,最后利用 if 判断语句将我们需要的结果筛选出来.下面,我们用一个简单demo来进行学习. 求100-1000之间的水仙花数(Narcissus). public class Narcissus { public static

RX学习笔记:FreeCodeCamp的JavaScript基本算法挑战

FreeCodeCamp的JavaScript基本算法挑战 https://www.freecodecamp.com 2016-07-03 JavaScript还不是非常熟悉,用已经会的知识来解这些题,估计有些算法会非常笨. 1.反转字符串 str.split("").reverse().join(""); 2.阶乘(阶乘0的结果需为1) function factorialize(num) { var n=1; for(var i=num;i>0;i--){

【枚举算法Day1】20170529-2枚举算法专题练习

20170529-2枚举算法专题练习 青岛二中日期 序号 题目名称 输入文件名 输出文件名 时限 内存 算法 难度 分类 081113 1 最大矩形 rectangle.in rectangle.out 1s 256MB 枚举 1 02枚举 081031 2 回文 palin.in palin.out 1s 256MB 枚举.优化 1 02枚举 081008 3 问题的设置 problemsetter.in problemsetter.out 1s 256MB 排序+枚举 1 02枚举 0810

2017-9-16C#笔记(枚举算法,百元买鸡)

枚举算法: 百元买鸡 枚举算法的ì例子:问题如下:某3人有100元打算买100只鸡,其中公鸡为5元每只,母鸡为3元每只,小?鸡为3只1块钱,问可以买多少只公鸡,母鸡,小鸡? int x, y, z; for (x = 0; x <= 20; x++) for (y = 0; y <= 33; y++) for (z = 0; z <= 100; z++) if ((x + y + z == 100) && (5 * x + y * 3 + z / 3 == 100) &a

比较“笨”的枚举算法(一)

枚举即一一列举. 一.枚举算法的思想 将问题所有的可能答案一一列举,然后根据实际情况选择合适而丢弃不合适的.在c语言中,枚举算法一般使用while循环实现. 二.实例演练 (1)"百钱买百鸡"问题:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一.百钱买百鸡,问鸡翁.母.雏各几何? 代码实现: #include "stdio.h" int main() { int x, y, z; for (x = 0; x <= 20;x++) { for (y = 0; y

JavaScript的算法和流程控制

代码的整体结构是影响运行速度的主要因素之一.代码数量少一定原型速度快,代码数量多却不意味着运行速度一定慢. 1. 循环 类型: 1) for由初始化.前测条件.后执行体.循环体组成: for(var i=0;i<10;i++) {循环体}  => for(var i=0,j=10;i<j;i++) {} 2) while由前测条件和循环体组成:var i=0; while(i<10){循环主体 i++;} 3) do-while由后测条件和循环体组成, 循环体会至少运行一次操作,再

生理周期 枚举算法问题

趁着寒假抓紧自学C++..... 生理周期问题是比较简单的算法问题,运用到了  枚举  的思想. 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为 23 天. 28 天和33 天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例 如,智力周期的高峰,人会思维敏捷,精力容易高度集中.因为三个周期的周长不同,所以 通常三个周期的高峰不会落在同一天.对于每个人,我们想知道何时三个高峰落在同一天. 对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不

JavaScript实现算法

leetcode算法题(JavaScript实现) 题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数.一些算法题等.每次submit之后,看看自己的代码,再看看别人写的代码.发现自己写的代码和实现实现思路简直弱爆了.于是,每次都会在submi完之后,会看看Top five的答案,理解大牛们的解题思路(大多数情况下,代码会使用ES6的语法,非常简洁)