最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實(shí)現(xiàn)翻頁后保持checkbox選中狀態(tài)的實(shí)現(xiàn)方法

 更新時(shí)間:2012年11月03日 01:12:28   作者:  
在項(xiàng)目中有需求如下:上下分頁后,選中的checkbox狀態(tài)保持不變

項(xiàng)目中的分頁使用真分頁,每次點(diǎn)擊上下頁按鈕后,再次調(diào)用后臺(tái)方法查詢,重新刷新此頁面。所以checkbox為false。

比如酷狗音樂中,上下頁選中的歌曲不會(huì)保留,只能在每頁中選擇添加后,再切換下頁。

但是項(xiàng)目中有著需求,所以只能完成實(shí)現(xiàn)。

項(xiàng)目具體的需求如下:給角色授權(quán)時(shí),選擇模塊以及模塊下的操作,點(diǎn)擊上下頁后選中的checkbox不變。

界面如下:

實(shí)現(xiàn)的思路如下:

在界面中,使用純js完成。把選中的checkbox中的id,其中包括模塊id,操作id,拼接成一個(gè)字符串,然后把字符串傳遞到action中。

每次調(diào)用此頁面時(shí),首選調(diào)用action中的選中的id字符串,然后根據(jù)在id字符串的基礎(chǔ)上,再次拼接本界面中選中的id。選中的checkbox,需要判斷,若不在id容器中,則加載進(jìn)來;未選中的checkbox,需要判斷,若原來在id容器中,則需要?jiǎng)h除;

在頁面完全加載完畢后,界面中checkbox與拼接的id字符串容器進(jìn)行比較,若在字符串容器中,在checkbox自動(dòng)勾選。否則為false。

提示說明:

因?yàn)楸舅悸肥前哑唇拥膇d作為字符串,則在js中獲取action中的選中的id字符串時(shí),需要注意語法。

思路實(shí)現(xiàn)代碼如下:

java中獲取action的id容器:

復(fù)制代碼 代碼如下:

String ids= (String)request.getAttribute("ids");
if((ids==null)){
ids="";
}

js代碼:上一頁函數(shù):
復(fù)制代碼 代碼如下:

function _prePage()
{
var ids="<%=ids%>";
var checkedIds= new String(ids);

var modules = document.getElementsByName("module");
var operates = document.getElementsByName("operate");

for ( var i = 0; i < modules.length; i++) {
if (modules[i].type == "checkbox" && modules[i].checked) {
if(checkedIds.indexOf(modules[i].value)==-1){
checkedIds=checkedIds+modules[i].value+",";
}
//判斷模塊下的操作
for ( var j = 0; j < operates.length; j++) {
var operateId = new String(operates[j].id);
operateId = operateId.substring(0, operateId.indexOf(","));
if (modules[i].value == operateId) {
if (operates[j].type == "checkbox"&& operates[j].checked) {
if(checkedIds.indexOf(operates[j].value)==-1){
checkedIds=checkedIds+operates[j].value+",";
}
}

if(operates[j].checked==false){
if(checkedIds.indexOf(operates[j].value)!=-1){
checkedIds=checkedIds.replace((operates[j].value+","),"");
}
}
}
}
}

if(modules[i].checked==false){
if(checkedIds.indexOf(modules[i].value)!=-1){
checkedIds=checkedIds.replace((modules[i].value+","),"");
}
}
}

with(document.forms[0])
{
action="roleAuthoriedManager!getModuleOperateBySystem?roleId="
+document.getElementById("roleId").value
+"&systemId="+document.getElementById("systemId").value
+"&pageNo="+<%=pageModelModule.getPreviousPageNumber()%>
+"&queryString="+document.getElementById("searchById").value
+"&ids="+checkedIds;
method="post";
submit();
}
}

在界面完全加載完畢后js代碼如下:
復(fù)制代碼 代碼如下:

document.onreadystatechange=statechange;
function statechange()
{
var ids="<%=ids%>";
var checkedIds= new String(ids);
if(document.readystate="complete")
{
//循環(huán)所有的控件
var inputs=document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++)
{
if(inputs[i].type=="checkbox")
{
if(checkedIds.indexOf(inputs[i].value)!=-1)
{
inputs[i].checked=true;
}
}
}
}
}

說明:在做測試時(shí),但是一直提示,函數(shù)未定義,不僅提示下頁函數(shù)未定義,凡是界面上所有的按鈕全部提示未定義。所以糾結(jié)了很長時(shí)間。解決后,拿出分享下。
遇到這種情況,肯定是頁面上有錯(cuò)誤。jsp解析成html后,html頁面中肯定有語法問題,導(dǎo)致這個(gè)html頁面無法解析。
開始的js某一句代碼:varids=<%=ids%>;
查看源文件時(shí),發(fā)現(xiàn)js中下一頁的某一句代碼解析如下:varids=;
這種語法問題,肯定無法解析,所以才一直無法運(yùn)行。
出現(xiàn)這種情況的原因是:var ids=<%=ids%>;從action傳過來id容器是空串,所以解析后就成var ids=;
因?yàn)榘裪d容器當(dāng)作字符串,所以需要var ids="<%=ids%>"即使傳過來的是空串,解析結(jié)果如下:var ids="";
總結(jié):遇到整個(gè)頁面的js函數(shù)都無法執(zhí)行,肯定說明js有問題,某個(gè)js函數(shù)中的語法問題,導(dǎo)致整個(gè)頁面無法解析運(yùn)行。若是某個(gè)js函數(shù)未定義,則有可能是函數(shù)名與標(biāo)簽定義的函數(shù)不相同。若是某個(gè)js函數(shù)中某個(gè)語句中某個(gè)字符未定義,則會(huì)明確提示未定義的字符。

相關(guān)文章

  • js 編程筆記 無名函數(shù)

    js 編程筆記 無名函數(shù)

    無名函數(shù),其中一個(gè)作用可能是生成新的函數(shù)對(duì)象的引用,主要是用于定義。
    2011-06-06
  • VSCode中 Eslint 和 Prettier 沖突問題最新解決方法

    VSCode中 Eslint 和 Prettier 沖突問題最新解決方法

    這篇文章主要介紹了VSCode中 Eslint和Prettier沖突問題,既然使用 eslint規(guī)范,我的理解上當(dāng)然是不能去修改eslint,因?yàn)檫@是共用規(guī)范,修改了就沒有再使用的必要了,所以我是不推薦修改eslint的方式,本文給結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • JavaScript中的16進(jìn)制字符介紹

    JavaScript中的16進(jìn)制字符介紹

    最早接觸到\unnn之類的字符是在微軟的官網(wǎng)上。當(dāng)時(shí)在網(wǎng)上找了一下這中字符格式,卻不知道該搜什么
    2011-10-10
  • JavaScript實(shí)現(xiàn)同一個(gè)頁面打開多張圖片

    JavaScript實(shí)現(xiàn)同一個(gè)頁面打開多張圖片

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)同一個(gè)頁面打開多張圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Javascript函數(shù)式編程簡單介紹

    Javascript函數(shù)式編程簡單介紹

    什么是函數(shù)式編程?根據(jù)百度百科的描述,“函數(shù)式編程是種編程典范,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語言最重要的基礎(chǔ)是 λ 演算(lambda calculus)。而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)。”
    2015-10-10
  • JS父頁面與子頁面相互傳值方法

    JS父頁面與子頁面相互傳值方法

    這篇文章主要介紹了使用JS在父頁面和子頁面間相互傳值方法,子頁面可以是window.open彈出的,也可以是iframe框架中的頁面,需要的朋友可以參考下
    2014-03-03
  • layer彈出層 iframe層去掉滾動(dòng)條的實(shí)例代碼

    layer彈出層 iframe層去掉滾動(dòng)條的實(shí)例代碼

    今天小編就為大家分享一篇layer彈出層 iframe層去掉滾動(dòng)條的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 詳解利用exif.js解決ios手機(jī)上傳豎拍照片旋轉(zhuǎn)90度問題

    詳解利用exif.js解決ios手機(jī)上傳豎拍照片旋轉(zhuǎn)90度問題

    這篇文章主要介紹了詳解利用exif.js解決ios手機(jī)上傳豎拍照片旋轉(zhuǎn)90度問題,有需要的朋友可以了解一下。
    2016-11-11
  • 微信小程序開發(fā)常見問題及解決方案

    微信小程序開發(fā)常見問題及解決方案

    這篇文章主要介紹了微信小程序開發(fā)常見問題及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • javascript實(shí)現(xiàn)類似超鏈接的效果

    javascript實(shí)現(xiàn)類似超鏈接的效果

    這篇文章主要介紹了使用javascript實(shí)現(xiàn)類似超鏈接的效果的特效,通過示例熟悉javascript事件,這里推薦給大家。
    2014-12-12

最新評(píng)論

南康市| 于都县| 农安县| 庆阳市| 周宁县| 孝感市| 桐柏县| 通山县| 阳谷县| 招远市| 涟源市| 郑州市| 富锦市| 舒城县| 赤峰市| 吉木乃县| 湘潭市| 泰州市| 军事| 镇康县| 阳西县| 东阿县| 平定县| 藁城市| 县级市| 景宁| 类乌齐县| 北海市| 辽阳市| 萨嘎县| 扬州市| 松潘县| 图们市| 灵丘县| 陆丰市| 宽城| 林周县| 诏安县| 大竹县| 海伦市| 邵阳县|