【发布时间】:2018-04-05 18:55:32
【问题描述】:
目前我只是用不同的东西替换一个角色,因为它是一张需要更改的乐谱,角色可能会有所不同。因此,我创建了一个 JavaScript 代码,如果在工作表上,它将替换所有这些字母。
这里出现了问题,如果我有字符 A 需要用 C 替换,然后在相同的 JavaScript 代码中 C 需要用 D 替换。因此 A 更改为 D 而不是 C。我需要替换每个字符每次操作一次,而不是将替换的文本与其他可能性进行比较。
到目前为止,这是我的代码:
function Dkoord() {
$('[id^=harm] > text:nth-child(1) > tspan:nth-child(1)').text(function(i, text) {
return text.replace('A', 'B').replace('A#', 'C').replace('Bb', 'C')
.replace('B', 'C#').replace('C', 'D').replace('C#', 'D#')
.replace('Db', 'Eb').replace('D', 'E').replace('D#', 'F')
.replace('Eb', 'F').replace('F', 'G').replace('F#', 'G#')
.replace('Gb', 'Ab').replace('G', 'A').replace('G#', 'A#')
.replace('Ab', 'Bb');
});
}
正如您所见,C 正在更改为 D,但后来将 D 更改为 E,我只想对一个字符进行一次比较。我该怎么做。
【问题讨论】:
-
将更改存储到临时变量并在完成后返回。
-
先把C换成D,再把A换成C就可以解决你的问题了。
-
@Chris,你能给我一个关于如何临时变量一个函数然后执行它的例子吗?谢谢
-
不是您要的,但从音乐上讲,您不能像那样移调音符/和弦,您必须考虑新键是什么。 (因为,例如,如果从 B 大调升调到 C# 大调,则 D# 音符必须变为 E# 而不是 F。)
标签: javascript replace