尝试以最少的功能更改来重写10年前编写的程序。从aspx页面到.NET Core 3.0。在大多数情况下,一切都是直接的。但这是我遇到的一个问题-主要是因为我对Javascript不太满意(而且我的在线搜索尚未揭示解决方案)。
在旧系统中,要搜索名称,过程如下:
因此,所有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函数在分配值时保留其值?