Я пытаюсь использовать параметры для помещения переменной в .innerHTML. Однако всякий раз, когда я пытаюсь что-то передать, это, как правило, выдает ошибку, потому что пытается найти innerHTML несуществующего элемента. Я хочу, чтобы внутренний HTML можно было настраивать для нескольких различных функций.
function roll(type, num, type2){
var total = (Math.floor(Math.random()*type)+1)
var total2 = total * num;
type2.innerHTML = total2;
}
d20button.onclick = function(){
roll(19,1, 'd20p');
}
Итак, идея в том, что когда я использую разные кнопки onclick, я могу передавать разные переменные в зависимости от того, что вводит пользователь. Однако вместо использования d20p.innerHTML он продолжает использовать type2.innerHTML. Мне интересно, есть ли способ заставить его использовать d20p.innerHTML, а также оставить его открытым для других вариантов.
Ой. Я не ищу совета по этому поводу. Это то, что я хочу понять сам. Я в основном просто ищу, как изменить этот .innerHTML
@NicholasVoss 'd20p' это идентификатор элемента, который вы хотите изменить html?
да. Это идентификатор, который я хочу изменить.
Пожалуйста, опубликуйте свою попытку использования innerHTML. Обычно нам нужен минимальный воспроизводимый пример
roll(19,1, document.getElementById('d20p'));


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


'd20p' — это строка, которая передается как type2 в roll. Строки не имеют свойства с именем innerHTML, поэтому вы должны использовать document.getElementById() перед доступом к innerHTML
function roll(type, num, type2){
var total = (Math.floor(Math.random()*type)+1)
var total2 = total * num;
document.getElementById(type2).innerHTML = total2;
}
Если вы хотите изменить innerHTML любой нажатой кнопки, вы можете передать this в качестве параметра из события onclick, которое будет относиться к нажатой кнопке.
d20button.onclick = function(){
roll(19,1,this);
}
function roll(type, num, type2){
var total = (Math.floor(Math.random()*type)+1)
var total2 = total * num;
type2.innerHTML = total2;
}
Извиняюсь. Я только что завел свой аккаунт. Как я могу что-то принять?
Неважно. Только что нашел кнопку. Он говорит, что нужно подождать 2 минуты, тогда я приму его.
this будет самой кнопкой. Ты хочешь это? Обратите внимание, что это также .innerHTML из <button>, а не .value.
@StackSlave Я отвечал на комментарий, который, по-видимому, был удален. Я понимаю ответ.
Это бросается один раз и умножается, что сильно исказит ваши случайные значения. Это имеет равномерное распределение от 1 до 20, когда вам нужна пирамида или кривая колокола для нескольких рулонов. Объединение N бросков — это не то же самое, что один бросок, умноженный на N.