It's uncertain whether using jQuery document.ready will fix the issue, since the original poster mentioned that it functions properly when a hardcoded value is used:
$('body').css("zoom","82");
I have a hunch that maybe iZoomValue isn't being set as you expect - perhaps trying an alert or console.log could confirm this?
Alternatively, it's possible that the jQuery css method only accepts string parameter values (like in your hardcoded example). Since iZoomValue is a number, the result would be
$('body').css("zoom",82);
You may want to try a hardcoded example with an integer as the parameter to verify this.
I hope this information proves helpful!