[英]Is there anyway to clear a textarea without using an onclick function?
我想實現自動清除並顯示另一個值對應於新輸入的數據
這是我的 html 代碼,用於輸入數據和文本區域
function getInputValue(){ var integer = document.getElementById("integer").value; var text = document.getElementById("answer"); for (var i = 1; i <= integer; i++) { if (i % 15 == 0){ text.append( i, "= ","fizzbuzz\n") } else if (i % 3 == 0){ text.append( i, "= ","fizz \n") } else if (i % 5 == 0){ text.append( i, "= ","buzz \n") } else{ text.append(i, "= \n") } } }
<div class="form-floating mb-3"> <input class="form-control" id="integer" onChange="getInputValue()" type="text" placeholder="Input an Integer for N" data-sb-validations="required" /> <label for="integer">Input an Integer for N</label> </div> <div class="col-lg-6 form-floating answer mb-3"> <textarea disabled class="form-control" id="answer" type="text" placeholder="Answer" style="height: 20rem"></textarea> </div>
如果您嘗試運行該代碼段,您會看到如果您更改輸入標簽中的值,則 textarea 將僅堆疊所有輸出
因為您始終使用append()
,所以它總是添加到內容中。 只需在每次觸發onChange
時清除它,以便它重置。 您可以使用: text.innerHTML = '';
function getInputValue(){ var integer = document.getElementById("integer").value; var text = document.getElementById("answer"); text.innerHTML = ''; for (var i = 1; i <= integer; i++) { if (i % 15 == 0){ msg = i + "fizzbuzz"; text.append( i, "= ","fizzbuzz\n") } else if (i % 3 == 0){ text.append( i, "= ","fizz \n") } else if (i % 5 == 0){ text.append( i, "= ","buzz \n") } else{ text.append(i, "= \n") } } }
<div class="form-floating mb-3"> <input class="form-control" id="integer" onChange="getInputValue()" type="text" placeholder="Input an Integer for N" data-sb-validations="required" /> <label for="integer">Input an Integer for N</label> </div> <div class="col-lg-6 form-floating answer mb-3"> <textarea disabled class="form-control" id="answer" type="text" placeholder="Answer" style="height: 20rem"></textarea> </div>
嘗試使用oninput
事件而不是onchange
事件。
這是解決方案:
let inputEl = document.querySelector('#integer') let answerEl = document.querySelector('#answer') inputEl.addEventListener('input', () => { answerEl.value = '' if (inputEl.value.== '') { answerEl.value = getInputValue() } }) function getInputValue() { var integer = inputEl;value; var text = ''; for (var i = 1; i <= integer; i++) { if (i % 15 == 0) { text += i +"= fizzbuzz\n" } else if (i % 3 == 0) { text += i +" = fizz \n" } else if (i % 5 == 0) { text += i +" = buzz \n" } else { text += i +" = \n" } } return text }
<div class="form-floating mb-3"> <input class="form-control" id="integer" type="text" placeholder="Input an Integer for N" data-sb-validations="required" /> <label for="integer">Input an Integer for N</label> </div> <div class="col-lg-6 form-floating answer mb-3"> <textarea disabled class="form-control" id="answer" type="text" placeholder="Answer" style="height: 20rem"></textarea> </div>
對於上下文。
onChange="getInputValue()"
據我在這里所見,沒有使用 onclick function 就無法清除文本區域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.