2016-09-27 112 views
2

我申請一個工作,他們扔了一個JS問題詳述如下:JavaScript的按鈕返回錯誤警報

寫一個函數來渲染頁面上10個<button>元素,通過10編號爲1,並提醒數點擊時所選按鈕的位置。做不是使用jQuery或任何其他庫。

看起來很簡單。我已經構建了一個工作模型,但它警告錯誤的數字。它會提醒按鈕11所有的按鈕。我知道我忘記了一件簡單的事情。下面是我的代碼(如果你有更好的組織方式,可以隨意批評它)。此外,這裏是一個鏈接到一個JSFiddle除了警報工作。

var count = 1; 

function createBtn(){ 
    var button = document.createElement("button"); 
    button.innerHTML = "Button " + count; 
    var body = document.getElementsByTagName("body")[0]; 
    body.appendChild(button); 
    button.addEventListener ("click", function() { 
    alert('Button ' + count); 
    }); 
} 

function buttonRender(){ 
    for(var i = 0; i < 10; i++){ 
    createBtn(); 
    count++; 
    } 
} 

buttonRender(); 

回答

4

您應該將計數傳遞給函數。

function createBtn(count){ 
    var button = document.createElement("button"); 
    button.innerHTML = "Button " + count; 
    var body = document.getElementsByTagName("body")[0]; 
    body.appendChild(button); 
    button.addEventListener ("click", function() { 
    alert('Button ' + count); 
    }); 
} 

function buttonRender(){ 
    for(var i = 0; i < 10; i++){ 
    createBtn(count); 
    count++; 
    } 
} 

https://jsfiddle.net/xw7mhag2/

+0

啊!我知道這很簡單。我會在Stack Overflow允許我在10分鐘內做出答案。謝謝Alberto! –

+0

如果解釋_why_count爲所有按鈕的11,即使它在創建按鈕時具有正確的值,此答案將會非常棒! –

0
var count = 0; 

    function createBtn(count){ 
    var button = document.createElement("button"); 
    button.innerHTML = "Button " + count; 
    var body = document.getElementsByTagName("body")[0]; 
    body.appendChild(button); 
    button.addEventListener ("click", function() { 
     alert("Button " + count); 
    }); 
    } 

    function buttonRender(){ 
    for(var i = 0; i < 10; i++){ 
    count++; 
     createBtn(count); 

    } 
    } 

    buttonRender();