2015-10-17 123 views
0

我無法弄清楚如何通過一個重置按鈕將所有按鈕的值重置爲默認值,任何人都可以幫忙嗎?如何通過一個按鈕重置所有按鈕的值

JS

var button1 = 0; 
var button1 = 0; 

function onClick1() { 
    button1 += 1; 
    document.getElementById("button1").innerHTML = button1; 
    }; 

function onClick2() { 
    button2 += 1; 
    document.getElementById("button2").innerHTML = button2; 
}; 

HTML

<button type="button" onClick="onClick1()">Click</button> 
<p><a id="button1">0</a></p> 
<button type="button" onClick="onClick2()">Click</button> 
<p><a id="button2">0</a></p> 

回答

1

這應該工作:

JS:

function onClickReset() { 
    button1 
    document.getElementById("button1").innerHTML = button1; 
    button2 
    document.getElementById("button2").innerHTML = button2; 
    // .. other code to set buttons to default state 
} 

HTML:

<button type="button" onClick="onClickReset()">Reset</button> 
+0

這將無法正常工作......它不會重設值 –

+0

正確,您需要在'onClickReset()'函數中添加額外的CSS以將所有「可見」狀態(即顏色,可見性)重置爲默認值。如果默認狀態具有更復雜的邏輯,您可能還需要重置其他「功能」狀態。 –

+0

@ charlie97我通過在這裏添加相應的代碼來修復它:https://jsbin.com/rosefosumi/edit?html,output 修改如下: 'button1 = 0;' 'document.getElementById(「button1」) .value = button1;' '...' ResetButton() 請檢查我是否遺漏了任何東西。 –

0

這將是很容易...只需添加另一個按鈕,並將它的onclick功能是:

function onClick3(){ 
    button1=button2=-1; 
    onClick1();onClick2(); 
} 
+0

沒有,有很多方法可以做到這一點。有沒有特定的方式,你想要它? – Markasoftware

0

比方說,有一個第三個按鈕,Reset所以HTML是:

<button type="button" onClick="onClick3()">Reset</button> 

的Javascript:

function onClick3() { 
    button1 = 0 
    button2 = 0 
    document.getElementById("button1").innerHTML = button1; 
    document.getElementById("button2").innerHTML = button2; 
};  
0

HTML

<button onclick="reset()">Reset<button> 

的Javascript

function reset() { 
    button1=0; 
    button2=0; 
    onClick1(); 
    onClick2(); 
} 
0

嘗試利用Array.prototype.forEach()設置button1button2變量0,每個a元素與id"button"開始0

var button1 = 0; 
 
var button2 = 0; 
 

 
function onClick1() { 
 
    button1 += 1; 
 
    document.getElementById("button1").innerHTML = button1; 
 
}; 
 

 
function onClick2() { 
 
    button2 += 1; 
 
    document.getElementById("button2").innerHTML = button2; 
 
}; 
 

 
function reset() { 
 
    button1 = button2 = 0; 
 
    [].forEach.call(document.querySelectorAll("[id^=button]"), function(el) { 
 
    el.innerHTML = button1 
 
    }); 
 
};
<button type="button" onClick="onClick1()">Click</button> 
 
<p><a id="button1">0</a> 
 
</p> 
 
<button type="button" onClick="onClick2()">Click</button> 
 
<p><a id="button2">0</a> 
 
</p> 
 
<input type="reset" onclick="reset()"/>

+0

@ charlie97是的。解決方案中的「js」應該將值返回爲「0」或「默認」。 _「顏色」_不出現在原始問題中。當'input type =「reset」'元素點擊時調用''''''''''''''按鈕''html'或'css'可以設置爲'reset'函數的任何值。 – guest271314

1

我要解決的不僅僅是重置的數字。

考慮下降onclick處理程序贊成addEventListener。這是最佳實踐,因爲on*事件屬性和DOM屬性相當過時。 addEventListener將它全部保存在JavaScript中,並有助於促進關注的分離。

另一件事是考慮你在標記中使用哪些元素。錨和段落可能不是你想要的,因爲它們在語義上沒有意義。我將刪除該段落,並使用一個readonly輸入元素(因爲它正在更改用戶輸入,因此完成)。將它全部包裝在form中,您可以使用標準的reset行爲。

使用CSS來獲得所需的間距和視覺效果。

考慮以下幾點:

var buttons = document.querySelectorAll('button'); 
 

 
function increment (event) { 
 
    var input = this.nextElementSibling, 
 
     value = parseInt(input.value) + 1; 
 

 
    input.value = value; 
 
} 
 

 
Array.prototype.forEach.call(buttons, function (button) { 
 
    button.addEventListener('click', increment); 
 
});
<form> 
 
    <div> 
 
    <button type="button">Click</button> 
 
    <input type="text" value="0" readonly /> 
 
    </div> 
 

 
    <div> 
 
    <button type="button">Click</button> 
 
    <input type="text" value="0" readonly /> 
 
    </div> 
 

 
    <button type="reset">Reset</button> 
 
</form>

+0

這應該適用於所有現代瀏覽器(IE9 +)。確保你的標記是按照正確的順序排列的,並且它被包裹在一個'form'中,就像我所顯示的那樣。爲了簡單起見,我依賴於nextElementSibling的標記結構來處理這個示例,因此請確保您的只讀輸入元素直接跟隨其按鈕夥伴。如果沒有這個順序,你需要用元素搜索得到更多的羅嗦,或者使用'data'屬性來直接找到目標輸入。 – Oka

+0

確保您的腳本標記出現在您的DOM元素之後。將它放在結束''標籤之前。如果你把它放在''中,'document.querySelector'被調用時'button'元素將不存在。 [這是一個例子](https://jsbin.com/mijenaceyo/edit?html,output)。 – Oka

+0

我顯示的代碼直接在輸入元素上存儲計數,作爲當前值,而不是全局變量。重置按鈕只是將表單的元素重置爲默認值。我建議你通過一些[網絡教程](https://developer.mozilla.org/en-US/docs/Web/Tutorials)開始閱讀(而不是瀏覽),並正確學習HTML,然後學習JavaScript和DOM。你犯了很多錯誤 - 在評論中有太多要解決的地方。 – Oka

相關問題