Reputation: 55
okay so i have 10 buttons that are displayed 0 through to 9. There is a text field below that will display " button 3 is clicked" or "button 0 is clicked" depending on what button has been clicked and so on. However i have to achieve this with one function so my code looks a little something like this.
<button onClick="changeNumber()">0</button>
<button onClick="changeNumber()">1</button>
<button onClick="changeNumber()">2</button>
<button onClick="changeNumber()">3</button>
<button onClick="changeNumber()">4</button>
<button onClick="changeNumber()">5</button>
<button onClick="changeNumber()">6</button>
<button onClick="changeNumber()">7</button>
<button onClick="changeNumber()">8</button>
<button onClick="changeNumber()">9</button>
<br/>
<br/>
<input type="text" id="garlicBread1" size="50%">
Im not sure how to make function changeNumber()
Upvotes: 1
Views: 1406
Reputation: 50291
You may like to use querySelectorAll
and and attach event listener to the button instead of adding onclick
to each & every button. Then use template literal to create the string and attach it to the value of the input
let getButtons = document.querySelectorAll('button').forEach((item) => {
item.addEventListener('click', function(e) {
let txt = e.target.textContent
document.getElementById('garlicBread1').value = `button ${txt} is clicked`
})
})
<button>0</button>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<button>6</button>
<button>7</button>
<button>8</button>
<button>9</button>
<br/>
<br/>
<input type="text" id="garlicBread1" size="50%">
Upvotes: 2
Reputation: 990
Well, you can do something like this:
<button onClick="changeNumber(0)">0</button>
<button onClick="changeNumber(1)">1</button>
<button onClick="changeNumber(2)">2</button>
<button onClick="changeNumber(3)">3</button>
<button onClick="changeNumber(4)">4</button>
<button onClick="changeNumber(5)">5</button>
<button onClick="changeNumber(6)">6</button>
<button onClick="changeNumber(7)">7</button>
<button onClick="changeNumber(8)">8</button>
<button onClick="changeNumber(9)">9</button>
<br/>
<br/>
<input type="text" id="garlicBread1" size="50%">
<script>
function changeNumber(val){
document.getElementById("garlicBread1").value =
val + "clicked";
}
</script>
Upvotes: 1
Reputation: 1381
agree with dk, just use it like this
<button onClick="changeNumber()">0</button>
<button onClick="changeNumber(1)">1</button>
<button onClick="changeNumber(2)">2</button>
<button onClick="changeNumber(3)">3</button>
<button onClick="changeNumber(4)">4</button>
<button onClick="changeNumber(5)">5</button>
<button onClick="changeNumber(6)">6</button>
<button onClick="changeNumber(7)">7</button>
<button onClick="changeNumber(8)">8</button>
<button onClick="changeNumber(9)">9</button>
<br/>
<br/>
<input type="text" id="garlicBread1" size="50%">
and in your function
function changeNumber(number){
console.log(number);
}
Upvotes: 1
Reputation: 6546
You can use something like this. You can pass the reference of the element to the event handler and later use that to get the innerHTML
function changeNumber(elm) {
document.getElementById('garlicBread1').value = 'button ' + elm.innerHTML + ' is clicked';
}
<button onClick="changeNumber(this)">0</button>
<button onClick="changeNumber(this)">1</button>
<button onClick="changeNumber(this)">2</button>
<button onClick="changeNumber(this)">3</button>
<button onClick="changeNumber(this)">4</button>
<button onClick="changeNumber(this)">5</button>
<button onClick="changeNumber(this)">6</button>
<button onClick="changeNumber(this)">7</button>
<button onClick="changeNumber(this)">8</button>
<button onClick="changeNumber(this)">9</button>
<br/>
<br/>
<input type="text" id="garlicBread1" size="50%">
Upvotes: 3