我正在尝试在JS中找到一个验证器,以检查是否已使用运算符(我们正在制作一个简单的计算器),所以我试图创建一个函数checkOperator()
,但这是死定的-end,当我使用它时,它什么也没做。
function checkOperator(){
var operation = document.getElementsByClassName("operator");
var string = document.getElementsByName('show');
var lastChar = string.charAt(string.length-1);
if(lastChar === operation){
var restring =string.replace(operation,operation);
return restring;
}
}
<div id="cursor" class="rekenmachine">
<form name="rekenmachine">
<div>
<input id="cursor" type="text" name="show" value="">
<input id="cursor" type="button" name="Clear" value="C" onclick="rekenmachine.show.value =''">
</div>
<div class="input">
<input id="cursor" type="button" value="7" onclick="rekenmachine.show.value +='7'">
<input id="cursor" type="button" value="8" onclick="rekenmachine.show.value +='8'">
<input id="cursor" type="button" value="9" onclick="rekenmachine.show.value +='9'">
<input id="cursor" type="button" class="operator" value="/" onclick="rekenmachine.show.value +='/'">
</div>
</form>
</div>
我希望只能放置一个运算符,因为如果多个运算符彼此相邻,则Eval无法计算字符串。
答案 0 :(得分:0)
function checkOperator(){
var operation = document.getElementsByClassName("operator");
var string = document.getElementsByName('show')[0].value;
console.log(string);
if(string.indexOf('/') > -1){
// here you can do what you want
alert('yes');
}else{
alert('no');
}
}
$(document).ready(function(){
$(document).click(function(){
checkOperator();
});
});
答案 1 :(得分:0)
代码中的主要问题是您需要使用value
(和[0]
)来访问getElementsByName
或getElementsByClassName
的(第一个)元素的实际文本。参见How do I get the value of text input field using JavaScript?。
(我建议使用id和getElementById()
来获取唯一元素,而不必使用[0]
)
而且,在我看来,使用“字符串”作为标识符也是一个坏主意。
function checkOperator(){
var elementShow = document.getElementsByName('show')[0];
var text = elementShow.value;
var lastChar = text.charAt(text.length-1);
if(lastChar !== '/'){
elementShow.value = text + '/'
}
}
<div id="cursor" class="rekenmachine">
<form name="rekenmachine">
<div>
<input id="cursor" type="text" name="show" value="">
<input id="cursor" type="button" name="Clear" value="C" onclick="rekenmachine.show.value =''">
</div>
<div class="input">
<input id="cursor" type="button" value="7" onclick="rekenmachine.show.value +='7'">
<input id="cursor" type="button" value="8" onclick="rekenmachine.show.value +='8'">
<input id="cursor" type="button" value="9" onclick="rekenmachine.show.value +='9'">
<input id="cursor" type="button" class="operator" value="/" onclick="checkOperator()">
</div>
</form>
</div>
备注:
我通过在此处显式使用'/'简化了逻辑。
您可以使用document.getElementsByClassName("operator")[0].value;
来获得运算符,但是如果您有多个运算符,逻辑将比这复杂一些。 (由于您不只是要测试相同运算符的重复性,因此您不能拥有+-/
和不能拥有//
相同。
但这将是另一个问题;)