JSFiddle - React, Tailwind, and code Playground
by acdcjunior
HTML
<div id="all">
<div id="testA">A</div> <div id="testE">E</div> <div id="testF">F</div> <div id="testG">G</div>
<div id="testX">X</div>
<div id="testH">H</div>
<div id="testM">M1</div><div id="testM">M2</div><div id="testM">M3</div>
</div>
JavaScript
function removeIdOfAllElementsWithId(id) {
var element, elementsFound = [];
while ((element = document.getElementById(id)) !== null) {
element.removeAttribute('id')
elementsFound.push(element);
}
return elementsFound;
}
function assignIdToElements(elements, id) {
for (var i = 0, n = elements.length; i < n; i++) { elements[i].id = id; }
}
var isDefinedEval = '(' +
function (isDefinedEvalVarname) {
var isDefinedEvalResult;
var isDefinedEvalElementsFound = removeIdOfAllElementsWithId(isDefinedEvalVarname);
try {
// the eval() throws an exception if isDefinedEvalVarname is declared in the scope
isDefinedEvalResult = eval('typeof '+isDefinedEvalVarname+' !== "undefined"');
} catch (e) {
isDefinedEvalResult = false;
}
assignIdToElements(isDefinedEvalElementsFound, isDefinedEvalVarname);
return isDefinedEvalResult;
}
+ ')';
/******************************************************************************************************************
* ASSERTS BELOW
*/
// saving current HTML to make sure nothing changes by using the function
var allHtml = document.getElementById('all').outerHTML;
console.assert(eval(isDefinedEval + '("' + 'testA' + '")' ) === false, 'testA: div exists, but not var AND no var name or div name is used again in the code');
console.assert(eval(isDefinedEval + '("' + 'testE' + '")' ) === false, 'testE: div exists, but not var AND the variable is used below, but through eval()');
eval('var testE = 123');
console.assert(eval(isDefinedEval + '("' + 'testE' + '")' ) === true, 'testE: var is now defined (through eval())');
console.assert(eval(isDefinedEval + '("' + 'testF' + '")' ) === false, 'testF: div exists AND var will be set (globally) at function -> var does not yet exist (only div exists)');
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie')...