Javascript:使用不同的参数动态设置onclick事件

时间:2019-12-27 15:39:14

标签: javascript jquery onclick

尝试以最少的功能更改来重写10年前编写的程序。从aspx页面到.NET Core 3.0。在大多数情况下,一切都是直接的。但这是我遇到的一个问题-主要是因为我对Javascript不太满意(而且我的在线搜索尚未揭示解决方案)。

在旧系统中,要搜索名称,过程如下:

  1. 单击字母。
  2. 字母“链接”回叫到后面的代码。
  3. 后面的代码将新字母追加到搜索字符串,然后在数据库中查询值。
  4. 代码将记录返回到GridView。

因此,所有26个字母都连续显示,并且每个都是链接。每个链接都由功能后面的相同代码处理。为了保持最小的功能更改(因为用户需要相同的功能),我将保留所有26个字母链接。但是,我希望使用javascript和ajax调用来完成尽可能多的操作,而不是调用服务器代码。这是我目前拥有的:

HTML

<a id="addAToSearch" title="A" accesskey="A" onclick="addClickedLetter('A');">A</a>
<a id="addBToSearch" title="B" accesskey="B" onclick="addClickedLetter('B');">B</a>
<a id="addCToSearch" title="C" accesskey="C" onclick="addClickedLetter('C');">C</a>
<a id="addDToSearch" class="searchLetters" title="D" accesskey="D">D</a>
<a id="addEToSearch" class="searchLetters" title="E" accesskey="E">E</a>

JavaScript

$(function () {
    var searchLetters = document.getElementsByClassName("searchLetters");
    for (i = 0; i < searchLetters.length; ++i) {
        var letter = searchLetters[i].getAttribute('title');
        searchLetters[i].addEventListener('click', function (letter) {
            addClickedLetter(letter);
        });
    }
});

function addClickedLetter(letter) {
    searchString = $("#txtSearchLastName").val() + letter;
    $("#txtSearchLastName").val(searchString);
};

对于字母A,B和C,当我单击链接时,它们会附加到字符串中,并显示在文本框中。但是,与其在HTML中分配onclick函数,不如动态地分配它。这就是D&E的来历。我有一些代码可以迭代带有searchLetters类的元素,并为其分配onclick函数。它的“种类”的作品。它确实分配了一个onclick函数,但是不幸的是,D&E都执行相同的值:E。我假设代码保留了最后一个设置为letter的值,并且每个onclick设置都使用相同的值。

我该怎么做才能确保设置的onclick函数在分配值时保留其值?

0 个答案:

没有答案