对这个问题有点困惑。我编写了这个函数来替换输入元素中的标点符号:
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/