2014-01-24 129 views
0

我有一個函數,我動態地嘗試通過將ID傳遞給一個函數來訪問DOM元素,然後向它添加一個事件偵聽器,此代碼完全可以在功能,但它在這裏不起作用。功能看起來像這樣:獲取DOM元素並動態添加事件偵聽器

var count = 0; 
function disableOnCheck(radioId, textBoxId) { 
var a = document.getElementById(radioId); 
var atext = document.getElementByID(textBoxId) 
alert(a.value); 
a.addEventListener('click', function (event) { 
    alert(count); 
    count++; 
    if (count === 2) { 
     a.checked = false; 
     atext.disabled = false; 
     count = 0; 
     return; 
    } 
    alert(a.value); 
    atext.disabled = true; 
}); 

};

我運行此使用:

disableOnCheck( '一個', 'ATEST');

而且,這裏是我創建http://jsfiddle.net/vamsiampolu/vKkUP/2/

+0

只是改變四號線的getElementById ......不是的getElementById – rafaelcastrocouto

+0

@rafaelcastrocouto糾正了,但文本框是不是第一次點擊 – vamsiampolu

+1

禁止在你撥弄你叫' disableOnCheck ('a','atest');'將其改爲''atext'' http://jsfiddle.net/vKkUP/9/ – rafaelcastrocouto

回答

-1

首先要嘗試通過錯methond得到元素ID,JavaScript是敏感的情況下,語言

這是工作代碼:

var count = 0; 

function disableOnCheck(radioId, textBoxId) { 

    var a = document.getElementById(''+radioId); 
    var atext = document.getElementById(''+textBoxId); // you were using getElementByID which is wrong 
    alert(a.value);; 
    a.addEventListener('click', function (event) { 
     alert(count); 
     count++; 
     if (count === 2) { 
      a.checked = false; 
      atext.disabled = false; 
      count = 0; 
      return; 
     } 
     alert(a.value); 
     atext.disabled = true; 
    }); 
}; 

disableOnCheck('a','atext'); // HERE you were using `atest` which is not a element id it's `atext` 

小提琴鏈接here.

+0

@downvoter我可以知道在這裏downvote的原因嗎? ? – nrsharma

1

JavaScript是大小寫敏感的小提琴。它應該是:

var atext = document.getElementById(textBoxId); 

,而不是

var atext = document.getElementByID(textBoxId); 

你會看到一個錯誤(遺漏的類型錯誤:對象#有沒有一種方法「的getElementById」)在控制檯中,如果您嘗試使用它。

更新:

你沒有得到你想要的東西,因爲你在錯誤的變量傳遞在你 disableOnCheck功能。

你有disableOnCheck('a', 'atest');
當它應該是disableOnCheck('a', 'atext');

Fiddle

+0

做到了這一點,現在我不能禁用第一個單選按鈕上的文本框並啓用它第二個.Ahh,調試和一個控制檯,一件小事似乎沒有 – vamsiampolu

+0

現在它應該工作。 JsFiddle沒有控制檯,但瀏覽器沒有。希望這可以幫助。 – putvande

0

變化document.getElementByIDdocument.getElementById

+0

做到了這一點,現在我不能禁用第一個單選按鈕上的文本框,並在第二個單選按鈕中啓用它。唉,調試和控制檯,一件小事似乎沒有 – vamsiampolu

相關問題