js閉包for迴圈總是只執行最後一個值得解決方法

来源:http://www.cnblogs.com/chuyi-123/archive/2017/01/04/6249624.html
-Advertisement-
Play Games

<style> li{ list-style: none;width:40px;height: 40px;text-align:center;line-height: 40px;cursor: pointer; } </style>html代碼: <ul id="uls"> <li style="b ...


<style>
li{
list-style: none;width:40px;height: 40px;text-align:center;line-height: 40px;cursor: pointer;
}
</style>

html代碼:
<ul id="uls">
    <li style="background:#aaa">0</li>
    <li style="background:#bbb">1</li>
    <li style="background:#ccc">2</li>
    <li style="background:#ddd">3</li>
</ul>


//這樣寫的話每次彈出都是最後一個值
// var lis=document.getElementsByTagName('li');
// for (var i = 0; i <=lis.length; i++) {
// lis[i].onclick = function(){
// alert(i);
// }
// };

使用閉包方法解決

//解決方法一:
var lis=document.getElementsByTagName('li');
for (var i = 0; i <=lis.length; i++) {
    (function(i){
        lis[i].onclick = function(){
            alert(i);
        }
    })(i);
};

//解決方法二:
var lis=document.getElementsByTagName('li');
for (var i = 0; i <=lis.length; i++) {
    lis[i].onclick = function(n){
        return function(){
            alert(n);
        }
    }(i);
};

//解決方法三(jquery):
$("ul li").click(function(){
    var index = $(this).index(); //獲取索引下標 也從0開始
    alert($(this).html());
});


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在上一篇博文結尾中,提到了存在的問題,那麼我們通過策略模式與簡單工廠結合的方式來解決上篇結尾中提到的問題。 方法很簡單,我們將CashContext簡單的改造一下即可 哈哈,是不是很像一個工廠? 那麼,客戶端調用起來就非常非常簡單了。 嗯,是不是很簡潔明瞭? 很多剛開始接觸設計模式的小伙伴有這樣一個 ...
  • 公司這幾天在準備新版本的上線,今天才忙裡偷閑來寫這篇博客。接著上一篇的“H5坦克大戰之【玩家控制坦克移動2】”(http://www.cnblogs.com/zhouhuan/p/H5_tankgame3.html),這一篇來寫怎麼建造敵人的坦克。 我的想法是,基於可擴展性和性能等方面的考慮,用構造 ...
  • 前言:家裡的樹莓派吃灰很久,於是拿出來做個室內溫度展示也不錯。 板子是model b型。 使用Python開發,web框架是flask,溫度感測器是ds18b20 1 硬體連接 ds18b20的vcc連接樹莓派的vcc , gnd連接gnd,DS連接GPIO4 2 ssh登錄樹莓派查看ds18b20 ...
  • 前段時間在使用Compass時遇到了其為難處理的一個坑,現記錄到博客希望能幫助到各位。 一、問題: 利用Koala或者是gulp編譯提示如下,截圖為koala編譯提示錯誤: 二、解決辦法 從問題截圖上看提示是找不到.sass-cache文件夾下麵的一個文件夾(父級目錄名稱中帶有特殊字元很容易重現), ...
  • 我們都知道在javascript里是沒有塊級作用域的,而ES6添加了塊級作用域,塊級作用域能帶來什麼好處呢?為什麼會添加這個功能呢?那就得瞭解ES5沒有塊級作用域時出現了哪些問題。 ES5在沒有塊級作用域的情況下出現的問題: 一。在if或者for迴圈中聲明的變數會泄露成全局變數 二。內層變數可能會覆 ...
  • 實例 讓第二個元素收縮到其他元素的三分之一: 效果預覽 div:nth-of-type(2){flex-shrink:3;} 瀏覽器支持 表格中的數字表示支持該屬性的第一個瀏覽器的版本號。 緊跟在 -webkit-, -ms- 或 -moz- 後的數字為支持該首碼屬性的第一個版本。 屬性 flex- ...
  • 要求: 確保字元串的每個單詞首字母都大寫,其餘部分小寫。 這裡我自己寫了兩種方法,或者說是一種方法,另一個是該方法的變種。 第一種: 第一種方法我認為比較好理解一點。 第二種(這是基於第一種方法上的改動): 第二種方法減少了轉換對象,原理還是一樣的。 兩種方法的結果都是: ps:如有不足或錯誤請指出 ...
  • Function.prototype.toString這個原型方法可以幫助你獲得函數的源代碼, 比如: 輸出: 這個方法真是碉堡了…, 通過合適的正則, 我們可以從中提取出豐富的信息. 函數名 函數形參列表 函數源代碼 這些信息提供了javascript意想不到的靈活性, 我們來看看野生的例子吧. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...