В проекте, над которым я сейчас работаю, есть много элементов, для которых необходимо открыть диалоговое окно. Для каждого нового диалога данные внутри меняются, и это я сделал с помощью Javascript. Теперь, если я добавлю какие-либо элементы, например, флажок в диалоговом окне из Javascript, материал js не будет работать с ним. Итак, я проверил аналогичную проблему и получил ответ, который я реализовал и до сих пор не работает. В этом фрагменте я сделал аналогичную ситуацию. Кнопка «Добавить» используется для добавления в диалоговое окно, и при открытии диалогового окна флажок не работает, как в диалоговом окне во время загрузки страницы. Чтобы показать это, я добавил флажок перед ним, а не из Javascript. После добавления флажка из Javascript старый существующий флажок также не работает.
Пожалуйста, помогите мне, это очень поможет.
function resetJs(path) {
var scripts = document.getElementsByTagName('script'),
newScript = document.createElement("script");
newScript.src = path + "?timestamp=" + Math.round(new Date().getTime() / 1000);
for (var i = 0; i < scripts.length; ++i) {
var srcUrl = scripts[i].getAttribute('src');
if (srcUrl && srcUrl.indexOf(path) > -1) {
scripts[i].parentNode.replaceChild(newScript, scripts[i]);
}
}
}
var dialog = document.querySelector('dialog');
var addData = document.querySelector('#add');
addData.addEventListener('click', function() {
var data = document.querySelector('#dialogContent');
data.innerHTML += '<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-1"><input type="checkbox" id="checkbox-1" class="mdl-checkbox__input" checked><span class="mdl-checkbox__label">Checkbox From JS</span></label>';
});
var showDialogButton = document.querySelector('#show-dialog');
if (!dialog.showModal) {
dialogPolyfill.registerDialog(dialog);
}
showDialogButton.addEventListener('click', function() {
dialog.showModal();
resetJs('https://code.getmdl.io/1.3.0/material.min.js');
});
dialog.querySelector('.close').addEventListener('click', function() {
dialog.close();
});
<link href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css" rel="stylesheet"/>
<script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<button id="show-dialog" type="button" class="mdl-button">Show Dialog</button>
<button id="add" type="button" class="mdl-button">Add</button>
<dialog class="mdl-dialog">
<h4 class="mdl-dialog__title">Allow data collection?</h4>
<div class="mdl-dialog__content" id="dialogContent">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-1"><input type="checkbox" id="checkbox-1" class="mdl-checkbox__input" checked><span class="mdl-checkbox__label">Checkbox Added Before</span></label>
<p>
Allowing us to collect data will let us get you the information you want faster.
</p>
</div>
<div class="mdl-dialog__actions">
<button type="button" class="mdl-button">Agree</button>
<button type="button" class="mdl-button close">Disagree</button>
</div>
</dialog>