如何使用或从html可访问标记创建非全局javascript变量缓存

How to use or create a non-global javascript variable cache from a html accessible tag

本文关键字:创建 全局 javascript 缓存 变量 何使用 html 访问      更新时间:2023-09-26

我有一个javascript函数,需要从输入字段调用"onkeyup":

<input id="searchSurname" type="text" name="surname" onkeyup="queryPatients()" />

然而,在会话的生命周期内(或者只要用户正在使用该页面),该函数需要能够缓存每次事件发生时的一些结果。

为了防止我的缓存变量是全局可访问的(令人讨厌),我将它们封装在一个匿名函数中(我经常看到这种模式)

(function(){
    var cacheSurname = "";
    var cacheGivenNames = "";
    function queryPatients() {
        var surname = $('#searchSurname').val();
        var givenNames = $('#searchGivenNames').val();
        // do some more work, cache the variables 
        cacheSurname = surname;
        cacheGivenNames = givenNames;
    }   
}).call(this);

然而,由于如此封闭,我的输入字段无法调用该方法。

有合适的解决方案吗?还是我必须求助于一个全局变量?

由于您使用的是jQuery,因此您可以绑定到该"私有"范围内的key-up事件。

(function(){
    var cacheSurname = "";
    var cacheGivenNames = "";
    function queryPatients() {
        var surname = $('#searchSurname').val();
        var givenNames = $('#searchGivenNames').val();
        // do some more work, cache the variables 
        cacheSurname = surname;
        cacheGivenNames = givenNames;
    } 
    $('#searchSurname').on('keyup', queryPatients);
}).call(this);