fix edge case in singleton node creation
parent
f31f0ffa70
commit
c4e202cd0f
24
js/reveal.js
24
js/reveal.js
|
@ -518,18 +518,26 @@
|
|||
*/
|
||||
function createSingletonNode( container, tagname, classname, innerHTML ) {
|
||||
|
||||
var node = container.querySelector( '.' + classname );
|
||||
// Find all nodes matching the description
|
||||
var nodes = container.querySelectorAll( '.' + classname );
|
||||
|
||||
// If no node was found or the node is inside another container
|
||||
if( !node || node.parentNode !== container ) {
|
||||
node = document.createElement( tagname );
|
||||
node.classList.add( classname );
|
||||
if( typeof innerHTML === 'string' ) {
|
||||
node.innerHTML = innerHTML;
|
||||
// Check all matches to find one which is a direct child of
|
||||
// the specified container
|
||||
for( var i = 0; i < nodes.length; i++ ) {
|
||||
var testNode = nodes[i];
|
||||
if( testNode.parentNode === container ) {
|
||||
return testNode;
|
||||
}
|
||||
container.appendChild( node );
|
||||
}
|
||||
|
||||
// If no node was found, create it now
|
||||
var node = document.createElement( tagname );
|
||||
node.classList.add( classname );
|
||||
if( typeof innerHTML === 'string' ) {
|
||||
node.innerHTML = innerHTML;
|
||||
}
|
||||
container.appendChild( node );
|
||||
|
||||
return node;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue