2011-08-15 117 views
-3

什麼引起了這個錯誤?我應該傳遞element.value到函數中嗎?我知道如何在JSP中設置,而不是在JavaScript中。我無法將值傳遞給另一個函數。'value.length'爲空或不是對象

function editCommentToggle(id) 
{ 
    theRow = document.getElementById("id"+id); 
    //user = theRow.cells[0].innerHTML; 
    //date = theRow.cells[1].innerHTML; 
    com = theRow.cells[2].innerHTML; 


    idx = 2; 
    maxlength = 250; 
    // Comment field 

    cell = theRow.cells[idx]; 
    while(cell.childNodes.length > 0) 
     cell.removeChild(cell.childNodes[0]); 
    element = document.createElement("textarea"); 
    element.id="comments-"+id; 
    element.rows="3"; 
    element.value = com; 
    element.style.width = "400px"; 
    element.maxLength = "250"; 
    element.onfocus = element.onkeydown = element.onkeyup = function(){ 
      return characterCounterEdit(undefined, maxlength, element); 
    }; 
    cell.appendChild(element); 



function characterCounterEdit(id, maxLen, inputElement) 
{ 
    spanId = document.getElementById(id); 

    if (spanId) 
    { 
     // Update the counter the user sees. 
     var whatIsLeft = maxLen - inputElement.value.length; 

     if (whatIsLeft < 0) whatIsLeft = 0; 
     spanId.innerText = whatIsLeft; 
    } 

    // Restrict user from entering more than the maxlen. 
**ERROR HERE-->>>** if (inputElement.value.length > maxLen) 
    { 
     inputElement.value = inputElement.value.substring(0, maxLen); 
    } 
} 
+1

你的問題是什麼?你有什麼嘗試?我們不是一個自動化的代碼調試機器。 –

+0

我嘗試在函數中傳遞「元素」本身 –

+1

請回答一個問題,最好由至少幾個英文句子組成。最好用一些小心謹慎的句子,而不是少量的拼寫錯誤和缺乏標點符號! –

回答

2

嘗試改變這個...

element.onfocus = element.onkeydown = element.onkeyup = function(){return characterCounterEdit(undefined, maxlength, element);}; 

對此...

​​

或者你也可以嘗試使用event tar get/sourceElement,在這裏描述 - http://www.quirksmode.org/js/events_properties.html - 在您的characterCounterEdit函數中。

+0

嘿哥們......這個工作! –

+0

+1:好地方安東尼! –

+0

我很高興它解決了您的問題。似乎有些人有點快速關閉這個問題,並沒有真正給你一個機會讓它修復,所以你實際上問你的問題。希望在雙方學到一些教訓:) –

1
element.onfocus = element.onkeydown = element.onkeyup = function(){return characterCounterEdit(undefined, maxlength, element);}; 

如果這是theonly的地方,你的characterCounterEdit函數被調用,然後由當時的焦點/ KEYDOWN/KEYUP事件被觸發,element最有可能被分配一些其他的價值,這沒有按沒有.value屬性。

而是在elementmaxlength傳遞(可能不存在了的時候觸發的事件(或多個),這樣做:

element.maxlength = maxlength 
element.onfocus = element.onkeydown = element.onkeyup = function(){return characterCounterEdit();}; 

function characterCounterEdit() { 
    .... 
    var whatIsLeft = maxLen - this.value.length; 
            ^^^^--- use 'this' instead. 
    .... 
    if (this.value.length > this.maxlength) ... 
    .... 

} 
+0

嘿,哥們,thanx ...我只是改變了元素到'這個',並像下面的朋友一樣工作。我會試試你的方式也看看,如果這是一個替代...欣賞它! –