使用 .getElementByID 时,Onclick 函数只工作一次
Onclick function only works once, when using .getElementByID
以前也有人问过类似的其他类似问题,但答案通常是某些变量没有正确更新,因此每次按钮都会产生相同的结果。
我有一个 html 页面,其中有两个文本框,它们之间有一个按钮,单击该按钮时,从最上面的框中获取文本,对其进行修改,然后修改后的文本显示在底部框中。为什么即使在框中放置了新文本,该功能也只能使用一次?
document.getElementById('buttonVal').onclick = function(){
var text = document.getElementById('textbox').value;
var revText = document.getElementById('buttonVal').onclick = reverse(text)
document.getElementById('revBox').value = revText
};
function reverse(textString){
return textString.split("").reverse().join("");
}
<form>
<fieldset>
<legend>text reversal</legend>
<p>
Enter text in box below
<p>
<label></label>
<textarea id = "textbox"
rows = "10"
cols = "120"></textarea>
<br>
<p>
<input type="BUTTON" value="REVERSE" id="buttonVal">
<br>
<p>
Your text backwards is:
<p>
<label></label>
<textarea id = "revBox"
rows = "10"
cols = "120"></textarea>
</fieldset>
</form>
问题是您在 onclick
方法中使用了 onclick
。如果您只是将该行从 var revText = document.getElementById('buttonVal').onclick = reverse(text)
简化(这也很糟糕,因为您双重分配了一些东西,其中一个是 onclick
方法)到 var revText = reverse(text);
,您可以避免一些复杂性并使代码有效。
document.getElementById('buttonVal').onclick = function(){
var text = document.getElementById('textbox').value;
var revText = reverse(text);
document.getElementById('revBox').value = revText;
};
function reverse(textString){
return textString.split("").reverse().join("");
}
<form>
<fieldset>
<legend>text reversal</legend>
<p>
Enter text in box below
<p>
<label></label>
<textarea id = "textbox"
rows = "10"
cols = "120"></textarea>
<br>
<p>
<input type="BUTTON" value="REVERSE" id="buttonVal">
<br>
<p>
Your text backwards is:
<p>
<label></label>
<textarea id = "revBox"
rows = "10"
cols = "120"></textarea>
</fieldset>
</form>
非常容易修复:
改变这个
var revText = document.getElementById('buttonVal').onclick = reverse(text)
至此
var revText = reverse(text);
第一行或多或少是乱码。
以前也有人问过类似的其他类似问题,但答案通常是某些变量没有正确更新,因此每次按钮都会产生相同的结果。 我有一个 html 页面,其中有两个文本框,它们之间有一个按钮,单击该按钮时,从最上面的框中获取文本,对其进行修改,然后修改后的文本显示在底部框中。为什么即使在框中放置了新文本,该功能也只能使用一次?
document.getElementById('buttonVal').onclick = function(){
var text = document.getElementById('textbox').value;
var revText = document.getElementById('buttonVal').onclick = reverse(text)
document.getElementById('revBox').value = revText
};
function reverse(textString){
return textString.split("").reverse().join("");
}
<form>
<fieldset>
<legend>text reversal</legend>
<p>
Enter text in box below
<p>
<label></label>
<textarea id = "textbox"
rows = "10"
cols = "120"></textarea>
<br>
<p>
<input type="BUTTON" value="REVERSE" id="buttonVal">
<br>
<p>
Your text backwards is:
<p>
<label></label>
<textarea id = "revBox"
rows = "10"
cols = "120"></textarea>
</fieldset>
</form>
问题是您在 onclick
方法中使用了 onclick
。如果您只是将该行从 var revText = document.getElementById('buttonVal').onclick = reverse(text)
简化(这也很糟糕,因为您双重分配了一些东西,其中一个是 onclick
方法)到 var revText = reverse(text);
,您可以避免一些复杂性并使代码有效。
document.getElementById('buttonVal').onclick = function(){
var text = document.getElementById('textbox').value;
var revText = reverse(text);
document.getElementById('revBox').value = revText;
};
function reverse(textString){
return textString.split("").reverse().join("");
}
<form>
<fieldset>
<legend>text reversal</legend>
<p>
Enter text in box below
<p>
<label></label>
<textarea id = "textbox"
rows = "10"
cols = "120"></textarea>
<br>
<p>
<input type="BUTTON" value="REVERSE" id="buttonVal">
<br>
<p>
Your text backwards is:
<p>
<label></label>
<textarea id = "revBox"
rows = "10"
cols = "120"></textarea>
</fieldset>
</form>
非常容易修复:
改变这个
var revText = document.getElementById('buttonVal').onclick = reverse(text)
至此
var revText = reverse(text);
第一行或多或少是乱码。