Reputation: 415
While calling document.getElementById
by using variable it return null value. Below is the sample code:
function savenext(k)
{
qdd=k.id;
var divs = document.getElementsByClassName("qpanel");
for(var i=0;i<divs.length;i++)
{
divs[i].style.display = "none";
}
str = qdd.replace(/SN/g, '');
str='Q'+str;
var d = document.getElementById(str);
d.style.display = "block";
}
<div id="main" class="qpanel" id="Q3">
Q3
</div>
<div id="main" class="qpanel" id="Q2">
Q2
</div>
<div id="main" class="qpanel" id="Q6">
Q6
</div>
<input type="button" value="Save and next" id="SN3" onclick="savenext(this)" class="savenext">
<input type="button" value="Save and next" id="SN2" onclick="savenext(this)" class="savenext">
<input type="button" value="Save and next" id="SN6" onclick="savenext(this)" class="savenext">
document.getElementById(str)
returns null
Upvotes: 1
Views: 1849
Reputation: 2323
Two things need to be noted.
*Every item should have only one id. here each div got an id main and another id Q3. *ID should be unique but not required.
Here goes the working code
<!doctype html>
<html>
<body>
<div class="qpanel" id="Q3">
Q3
</div>
<div class="qpanel" id="Q2">
Q2
</div>
<div class="qpanel" id="Q6">
Q6
</div>
<input type="button" value="Save and next" id="SN3" onclick="savenext(this)" class="savenext">
<input type="button" value="Save and next" id="SN2" onclick="savenext(this)" class="savenext">
<input type="button" value="Save and next" id="SN6" onclick="savenext(this)" class="savenext">
<script>
function savenext(k)
{
qdd=k.id;
var divs = document.getElementsByClassName("qpanel");
for(var i=0;i<divs.length;i++)
{
divs[i].style.display = "none";
}
str = qdd.replace(/SN/g, '');
str='Q'+str;
var d = document.getElementById(str);
d.style.display = "block";
}
</script>
</body>
</html>
Upvotes: 0
Reputation: 956
This is the working solution. you had given two ids to the div
<script >
function savenext(k)
{
qdd=k.id;
divs = document.getElementsByClassName("qpanel");
for(var i=0;i<divs.length;i++)
{
console.log(divs[i])
divs[i].style.display = "none";
}
str = qdd.replace(/SN/g, '');
str='Q'+str;
var d = document.getElementById(str);
console.log(str)
d.style.display = "block";
}
</script>
<div class="qpanel" id="Q3">
Q3
</div>
<div class="qpanel" id="Q2">
Q2
</div>
<div class="qpanel" id="Q6">
Q6
</div>
<input type="button" value="Save and next" id="SN3" onclick="savenext(this)" class="savenext">
<input type="button" value="Save and next" id="SN2" onclick="savenext(this)" class="savenext">
<input type="button" value="Save and next" id="SN6" onclick="savenext(this)" class="savenext">
Upvotes: 1