2011-08-15 85 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 ...我只是改变了元素到'这个',并像下面的朋友一样工作。我会试试你的方式也看看,如果这是一个替代...欣赏它! –