I'm trying to avoid using innerHTML
because it causes my browser to crash, probably due to the 250 milliseconds refresh rate.
Anyway, I would rather have some content in an hidden <div>
and make the <div>
visible only if a certain condition is met. What's the best approach to go around this?
Basically, what I'm doing now is..
setInterval(function () {
if (serverReachable()) {
.... // lines of code
.... // lines of code
var changeIt = document.getElementById('change')
changeIt.innerHTML = '';
timeout = setInterval(function(){window.location.href = "Tracker.html";},5000);
}
} else {
clearTimeout(timeout);
timeout = null;
var changeIt = document.getElementById('change')
changeIt.innerHTML = 'offline';
}
}, 250);
This will crash my browser, because I'm not using innerHTML
to print "offline" but a whole <div>
. I want to have this <div>
hidden, and instead of using innetHTML
, to simply unhide if a condition is met (in this case, no internet connection).
Then use CSS to hide and unhide the div. You can do something like this:
changeIt.style.visibility = 'hidden';
to make the div disappear. And
changeIt.style.visibility = 'visible';
to show it again.
Set the display
CSS property of the div to none
.
https://developer.mozilla.org/en-US/docs/CSS/display
Example of setting it programmatically with Javascript: http://jsbin.com/ezanuv/1/edit
您可以将display属性设置为none,或将visibility属性设置为hidden。
I prefer using css display property. I have a running code which I wrote recently. Its very simple and scalable as well.
<HEad>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
$(document).ready(function() {
$.setDisplay = function (id){
if($("#" + id ).css('display') == 'none'){
$("#" + id ).css('display', 'block');
}
else
if($("#" + id ).css('display') == 'block'){
$("#" + id ).css('display', 'none');
}
}
$('*[id^="divheader"]').click(function (){
$.setDisplay($(this).data("id"));
});
});
</script>
</HEad>
<div id='divheader-div1' data-id='div1'>
This is the header Click to show/unshow
</div>
<div id='div1' style='display: block'>
<div>
<label for="startrow">Retail Price:</label>
<input type="text" name="price" id="price" value=""><small></small>
</div>
</div>
<div id='divheader-div2' data-id='div2'>
This is the header Click to show/unshow
</div>
<div id='div2' style='display: none'>
<div>
<label for="startrow">Division:</label>
<input type="text" name="division" id="division" value=""><small> </small>
</div>
</div>
The best way is to set the display none for hidden and block for visible
//the element is the div you want to hide or display
element.style.display = (element.style.display == "block") ? "none": "block";
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.