How would I rewrite this without the document.write? In Jsfiddle I get this mess
ID: 3796110 • Letter: H
Question
How would I rewrite this without the document.write? In Jsfiddle I get this message that says it disallowed and can break the fiddle
document.write is disallowed in JSFiddle environment and might break your fiddle.
Executable Code
HTML Code
<!DOCTYPE html>
<title>Queue Program</title>
<script src="script.js"></script>
<body>
</body>
JScript Code
function MyQueue()
{
var qdata = [];
var qfront=0;
var qrear=0;
var qsize=20;
this.insertvalue = function(data)
{
if(qrear==qsize)
document.write("Queue full!");
else
{
qdata[qrear]=data;
qrear++;
}
};
this.delete = function()
{
var deleteddata;
if(qfront==qrear)
document.write("Queue empty!");
else
{
deleteddata=qdata[qfront];
qfront++;
}
return deletedElement;
};
this.deleteByElement = function(element)
{
var indexvalue = qdata.indexOf(data);
if (indexvalue > -1)
{
qdata.splice(indexvalue, 1);
qrear--;
}
else
{
document.write("Data aren't found ");
}
}
this.deleteByFactor = function(data)
{
var isdeleted=false;
for(var j=qfront;j<qrear;j++)
{
if(qdata[i]%data==0)
{
this.deleteByElement(qdata[i]);
isdeleted=true;
}
}
return isdeleted;
}
this.isEmpty = function()
{
return qrear == 0;
};
this.qsize = function()
{
return qdata.length;
};
this.clear = function()
{
qdata = [];
};
this.print = function()
{
var myQ='';
for(var j=qfront;j<qrear;j++)
{
myQ = myQ + qdata[j]+",";
}
return myQ;
};
}
function createMyQueue(myQ)
{
var newQ = new MyQueue();
var myIter=0;
var initVal=2;
document.write("Iteration "+myIter+": Q1 = "+myQ.print()+" Q2 ="+newQ.print());
while(!myQ.isEmpty())
{
if(myQ.deleteByFactor(initVal))
{
myIter++;
newQ.insertvalue(initVal);
document.write("Iteration "+myIter+": Q1 = "+myQ.print()+" Q2 ="+newQ.print());
}
initVal++;
}
}
var data = prompt("Enter the queue data", "");
var myQ = new MyQueue();
for(var j=2;j<=data;j++)
myQ.insertvalue(j);
createMyQueue(myQ);
Output
Sample output Iteration 0: Q1 2 3 4 5 67 8 9 10 Q2 J Iteration 1: Q1 3 5 7 9 Q2 2 Iteration 2: Q1 5 7 Q2 2 3 Iteration 3: Q1 37 Q2 2 3 5 Iteration 4: Q1 -Q2 2357Explanation / Answer
Well if document.write is not allowed in JsFiddle and you still want to use that, then you may set up some container in HTML and keep on showing the data in that container instead of console(by using document.write).
For Example: set a <p> tag in HTML and instead of printing data using document.write, start printing the data in the <p> tag.
Following is the implementation of HTML and JS code using above idea
HTML Code
<!DOCTYPE html>
<title>Queue Program</title>
<p></p>
<script src="script.js"></script>
<body>
</body>
JAVASCRIPT CODE
function MyQueue()
{
var qdata = [];
var qfront=0;
var qrear=0;
var qsize=20;
this.insertvalue = function(data)
{
if(qrear==qsize)
document.getElementsByTagName("p")[0].innerHTML = "Queue full!";
else
{
qdata[qrear]=data;
qrear++;
}
};
this.delete = function()
{
var deleteddata;
if(qfront==qrear)
document.getElementsByTagName("p")[0].innerHTML = "Queue empty!";
else
{
deleteddata=qdata[qfront];
qfront++;
}
return deletedElement;
};
this.deleteByElement = function(element)
{
var indexvalue = qdata.indexOf(data);
if (indexvalue > -1)
{
qdata.splice(indexvalue, 1);
qrear--;
}
else
{
document.getElementsByTagName("p")[0].innerHTML = "Data aren't found ";
}
}
this.deleteByFactor = function(data)
{
var isdeleted=false;
for(var j=qfront;j<qrear;j++)
{
if(qdata[i]%data==0)
{
this.deleteByElement(qdata[i]);
isdeleted=true;
}
}
return isdeleted;
}
this.isEmpty = function()
{
return qrear == 0;
};
this.qsize = function()
{
return qdata.length;
};
this.clear = function()
{
qdata = [];
};
this.print = function()
{
var myQ='';
for(var j=qfront;j<qrear;j++)
{
myQ = myQ + qdata[j]+",";
}
return myQ;
};
}
function createMyQueue(myQ)
{
var newQ = new MyQueue();
var myIter=0;
var initVal=2;
document.getElementsByTagName("p")[0].innerHTML = "Iteration "+myIter+": Q1 = "+myQ.print()+" Q2 ="+newQ.print();
while(!myQ.isEmpty())
{
if(myQ.deleteByFactor(initVal))
{
myIter++;
newQ.insertvalue(initVal);
document.getElementsByTagName("p")[0].innerHTML ="Iteration "+myIter+": Q1 = "+myQ.print()+" Q2 ="+newQ.print();
}
initVal++;
}
}
var data = prompt("Enter the queue data", "");
var myQ = new MyQueue();
for(var j=2;j<=data;j++)
myQ.insertvalue(j);
createMyQueue(myQ);
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.