JavaScript错误:无法读取未定义“this”的属性?

时间:2016-12-04 13:41:44

标签: javascript this keyboard-events addeventlistener

我想将用户在html表单的文本字段中输入的内容转换为大写:

<input type="text" id="inputword" name="inputword">

我在keyup事件上为该输入元素添加了一个事件监听器:

document.getElementById("inputword").addEventListener("keyup", myFunction);

这是触发“keyup”事件时调用的函数

function myFunction() {
    // Convert to uppercase on keyup event                                                  
    this.value = this.value.toUpperCase();                                 
}

这很有效。当用户键入字符时,它会在输入文本字段中以大写字母显示(在函数内使用 this.value

现在,我想将参数传递给函数。据我所知,使用时传递参数 addEventListener()方法,需要“匿名函数”。

我正在尝试以这种方式将String传递给函数:

document.getElementById("inputword").addEventListener("keyup", function() {      
        myFunction("TEST");                                                     
});  

function myFunction(myString) {  
    // Convert to uppercase on keyup event                                                 
    this.value = this.value.toUpperCase();                             
    ... // do other things                     
}        

但现在,当我在文本字段中输入内容时,出现以下错误:

myscript.js:32 Uncaught TypeError: Cannot read property 'toUpperCase' of undefined(…)

在注册事件时使用“匿名函数”后似乎不再定义“ this.value ”。有没有办法在我的函数中访问“ this ”?

我的javascript代码位于html正文末尾的外部文件中:

   <script src="js/myscript.js"></script>                                    
</body>    

0 个答案:

没有答案