我有一个由多个修改的字符串,string.replace('x','y')
并且这些替换命令由复选框激活,并且到目前为止,当未选中其中一个复选框时,我无法自动反转该过程。我发现的唯一解决方案是string.replace('y','x')
在未选中复选框时执行...还有其他更清洁的方法吗?
问问题
123 次
2 回答
0
首先,执行 string.replace('x','y') 然后 string.replace('y','x') 撤消它是行不通的。原因如下:
起始字符串:"zxyxz" string.replace('x','y') 给你 "zyyyz" string.replace('y','x') 然后会给你 "zxxxz",这显然不是你开始的和。
这是你想要的我的想法:
http://fiddle.jshell.net/XZE9v/1/
每次单击/取消单击复选框时,它将重新应用规则。
如果你看不到这里是代码:
HTML:
<form id="myForm">
<input type="text" id="originalText" />
<br/>
a|x<input type="checkbox" data-find="a" data-replace="x" onclick="updateRegex()" />
<br/>
b|y<input type="checkbox" data-find="b" data-replace="y" onclick="updateRegex()" />
<br/>
c|z<input type="checkbox" data-find="c" data-replace="z" onclick="updateRegex()" />
</form>
<br/>
<div id="display"></div>
JS:
function updateRegex() {
var original = document.getElementById("originalText").value;
var newString = original;
var elems = document.getElementById("myForm").childNodes;
for(var i=0; i<elems.length; i++)
{
if ( "checkbox" == elems[i].type && elems[i].checked)
{
var regexp = new RegExp(elems[i].getAttribute("data-find"), 'g');
newString = newString.replace(regexp, elems[i].getAttribute("data-replace"));
}
}
document.getElementById("display").innerHTML = newString;
}
于 2013-08-02T13:48:14.723 回答
0
创建一个包含初始字符串值的数组。对阵列执行所有复选框操作。使用此数组获取最终输出字符串。
var array = ['Moe','Chuck','Larry']
function findItem(val){
var index = array.indexOf(val);
if(index != -1){
array[index] = val;
}
}
function onSubmit(){
return array.toString();
}
于 2013-08-02T13:42:48.077 回答