Передача пользовательского ввода HTML в качестве аргумента функции javascript - PullRequest
0 голосов
/ 01 октября 2019

У меня есть эта строка JavaScript:

stave.addClef("treble").addTimeSignature("4/4");

Исходя из того, что пользователь вводит в качестве ввода в HTML-документе, я хотел бы изменить «4/4» на «3/4»или любая другая фракция, которую придумал пользователь. Какой самый простой способ сделать эту условную замену?

Спасибо, Накуль

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Вот опция, которая позволит пользователю переключать числовые вводы вверх и вниз:

<input type="number" id="fraction-1"/>
<input type="number" id="fraction-2"/>

Current Signature:
<div id="current-sig"></div>

Затем в вашем javascript ...


// Get the select form element
const FRACT_1 = 'fract-1'
const FRACT_2 = 'fract-2'
const fract1 = document.querySelector(`#${FRACT_1}`)
const fract2 = document.querySelector(`#${FRACT_2}`)
const currentSigDiv = document.querySelector('#current-sig')

let currentSignature = '4/4'

const changeSignatureByFraction = ({target}) => {
    if(target.id === FRACT_1)) {
        currentSignature = `${target.value}${currentSignature.substring(1)}`
        stave.addClef("treble").addTimeSignature(currentSignature)
        currentSigDiv.innerHTML = currentSignature
    } else {
        currentSignature = `${currentSignature.slice(0, -1)}${target.value}`
        stave.addClef("treble").addTimeSignature(currentSignature)
        currentSigDiv.innerHTML = currentSignature
    }

}

// Listen for a change event
fract1.addEventListener('change', changeSignatureByFraction)
fract2.addEventListener('change', changeSignatureByFraction)

currentSigDiv.innerHTML = currentSignature
0 голосов
/ 01 октября 2019

Создать выпадающий список с возможными дробями. Запросите его значение в переменной. Передайте переменную в качестве аргумента для метода addTimeSignature().

HTML:

<select id="TimeSignatureSelect">
    <option value='1/4'>1/4</option>
    <option value='2/4'>2/4</option>
    <option value='3/4'>3/4</option>
    <option value='4/4'>4/4</option>
</select>

JS:

const timeSig = document.getElementByID('TimeSignatureSelect').value;
stave.addClef("treble").addTimeSignature(timeSig);
...