Aggiungere dinamicamente oggetti a una pagina HTML in JavaScript
Per aggiungere dinamicamente oggetti a una pagina HTML si possono usare le istruzioni createElement.
Ad esempio se voglio creare dinamicamente il seguente codice html:
devo scrivere:
e poi, ad esempio, aprire una popup SharePoint 2010 con l'html generato:
in alternativa posso usare jQuery con una stringa che rappresenta l'HTML
oppure, sempre con jQuery, creo un template dell'HTML nascosto all'interno della pagina
quindi, recupero il template, lo clono per avere una copia e rendo la copia visibile.
Ad esempio se voglio creare dinamicamente il seguente codice html:
HTML
<div>Prova: <input type="button" value="OK" onclick="SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, 'test1')" /></div>
JavaScript
var htmlElement = document.createElement('div');
var lbl = document.createTextNode('Prova: ');
htmlElement.appendChild(lbl);
var btnOK = document.createElement('input');
btnOK.setAttribute("type", "button");
btnOK.value = "OK";
btnOK.setAttribute("onclick","SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, 'test1')");
htmlElement.appendChild(btnOK);
JavaScript
var options = {
title: 'prova',
html: htmlElement,
width: 700,
height: 700,
showClose: true,
dialogReturnValueCallback: function(dialogResult, returnValue) {
if (dialogResult == SP.UI.DialogResult.OK) {
alert(returnValue);
}
}
};
SP.UI.ModalDialog.showModalDialog(options);
JavaScript
var template = $('<div>Prova: <input type="button" value="OK" onclick="SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, \'test1\')" /></div>');
var htmlElement = template[0]
HTML
<div id="popup-template" style="display:none;">
<div>
Text to search: <input type="text" id="popup-search-text" style="width: 100px" /> <input type="button" value="search" onclick="popupDoSearch()" />
</div>
<div id="popup-search-results"></div>
</div >
nota l'attributo display:none
e successivamente lo recupero in JavaScriptJavaScript
var popupTemplate = $("#popup-template").clone().show();
htmlElement = popupTemplate[0];
var options = {
title: 'prova',
html: htmlElement,
width: 700,
height: 700,
showClose: true,
dialogReturnValueCallback: function(dialogResult, returnValue) {
if (dialogResult == SP.UI.DialogResult.OK) {
alert(returnValue);
}
}
};