javascript - 将 'this' 传递到 Javascript 函数时出现问题

标签 javascript this

对这个问题有点困惑。我编写了这个函数来替换输入元素中的标点符号:

function punctuationReplace(element){
	var elementToChange = document.getElementById(element);
	elementToChange.value = elementToChange.value.replace(/\"/g, '');
	elementToChange.value = elementToChange.value.replace(/\'/g, '');
	elementToChange.value = elementToChange.value.replace(/&/g, 'and');
	elementToChange.value = elementToChange.value.replace(/</g, '');
	elementToChange.value = elementToChange.value.replace(/>/g, '');
}
<input type="text" id="IPR_FNM1" name="IPR_FNM1" value="" maxlength="30" size="31" placeholder="Forename 1" onblur="punctuationReplace(this)"/>

当我使用相关 ID 作为参数在浏览器控制台中手动运行该函数时,它可以工作。当我在函数内部添加行 alert(element.id); 时,我会收到包含正确元素 ID 的警报。所以我很困惑为什么当我使用 onblur="punctuationReplace(this)" 调用上面的 punctuationReplace 函数时它不起作用。

我确信有一个简单的解决方案,但不知道它是什么。

最佳答案

如果您以这种方式传入 this,则您已经拥有对该元素的引用,因此无需调用 getElementById

function punctuationReplace(element){
    var elementToChange = element; //document.getElementById(element);
    elementToChange.value = elementToChange.value.replace(/\"/g, '');
    elementToChange.value = elementToChange.value.replace(/\'/g, '');
    elementToChange.value = elementToChange.value.replace(/&/g, 'and');
    elementToChange.value = elementToChange.value.replace(/</g, '');
    elementToChange.value = elementToChange.value.replace(/>/g, '');
}

关于javascript - 将 'this' 传递到 Javascript 函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480274/

相关文章:

this - PreloadJS + Typescript

javascript - AJAX POST ---> 未识别的索引?

javascript - 是否可以覆盖内联 css 并使内联 css 属性不起作用?

javascript - 如何从匿名函数中删除函数的属性?

java - 'this' :method not applicable for the argument, 的一些问题也改进了格式

javascript - 为什么这个函数在放置在 Promise 中时会被破坏?

javascript - 使用 .bind 和 .unbind 移动 li

javascript - 在另一个函数中访问对象属性

javascript - 生成具有数字子集范围的数组的数组函数

c++ - 关于使用这个指针的问题