Javascript解决多选框Select排序问题

· 2 分钟阅读 · 827 字

这个还是因为我做的小东西,不得不去解决,不过最近可能是因为AJAX的影响,多数操作我最想考虑的是怎么使用Javascript解决,所以最近JS倒是经常用。 实例已经有了,看看365key的网摘修改页面,分类框里面最上面的是添加网摘的时候选择的分类,如果是按顺序的话,这些选项就不会被排在最上面了。 这样的操作应该是程序排序好再输出的,用程序做虽然没问题,但是会多消耗服务器资源,如果很多用户一起进行这种排序的话,别的不说数据库就挺吃力的,其实完全可以把排序的工作交给客户端Javascript去处理,速度上也不会出现问题,主要也是因为我觉得对于服务器资源能节省就节省点。 好了,原理是多项选择框里,把被标记为selected的选项和其他选项分别取出来放在不同的数组里,然后清空所有选项,接着把被标记为selected的选项插在选项组里,其他选项放在下面。 其实这个根本不能算是排序,只是想不到应该算什么,而且本文的部分想法来自CSDN:排序Select中Option项的一个示例,所以就在标题写上了排序。 代码如下:

javascript
{113 7643 <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kd">function</span> <span class="nx">sortTags</span><span class="p">(){</span> </span></span><span class="line"><span class="cl"><span class="nx">tags</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&#34;Tags&#34;</span><span class="p">);</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">selectedArray</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">();</span> </span></span><span class="line"><span class="cl"><span class="kd">var</span> <span class="nx">optionArray</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">();</span> </span></span><span class="line"><span class="cl"><span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">index</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="nx">index</span> <span class="o">&lt;</span> <span class="nx">tags</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">index</span><span class="o">++</span><span class="p">){</span> </span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="p">(</span><span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">selected</span><span class="o">==</span><span class="kc">true</span><span class="p">){</span> </span></span><span class="line"><span class="cl"><span class="nx">selectedArray</span><span class="p">[</span><span class="nx">selectedArray</span><span class="p">.</span><span class="nx">length</span><span class="p">]</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">text</span><span class="p">,</span> <span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">value</span><span class="p">,</span> <span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">selected</span><span class="p">);</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="k">else</span><span class="p">{</span> </span></span><span class="line"><span class="cl"><span class="nx">optionArray</span><span class="p">[</span><span class="nx">optionArray</span><span class="p">.</span><span class="nx">length</span><span class="p">]</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">text</span><span class="p">,</span> <span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">value</span><span class="p">,</span> <span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">].</span><span class="nx">selected</span><span class="p">);</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="p">(</span><span class="nx">index</span><span class="o">--</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"><span class="nx">tags</span><span class="p">.</span><span class="nx">options</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">index</span> <span class="o">&lt;</span> <span class="nx">selectedArray</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">index</span><span class="o">++</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"><span class="nx">tags</span><span class="p">.</span><span class="nx">add</span> <span class="p">(</span><span class="k">new</span> <span class="nx">Option</span><span class="p">(</span><span class="nx">selectedArray</span><span class="p">[</span><span class="nx">index</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">selectedArray</span><span class="p">[</span><span class="nx">index</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">selectedArray</span><span class="p">[</span><span class="nx">index</span><span class="p">][</span><span class="mi">2</span><span class="p">]));</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">index</span> <span class="o">&lt;</span> <span class="nx">optionArray</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">index</span><span class="o">++</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"><span class="nx">tags</span><span class="p">.</span><span class="nx">add</span> <span class="p">(</span><span class="k">new</span> <span class="nx">Option</span><span class="p">(</span><span class="nx">optionArray</span><span class="p">[</span><span class="nx">index</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="nx">optionArray</span><span class="p">[</span><span class="nx">index</span><span class="p">][</span><span class="mi">1</span><span class="p">]));</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div>}
不够智能的网志