Is there any compelling reason you're using iframes?
Normally, you can only print one window, frame or iframe at a time. One possible workaround is to have an invisible iframe and put the contents of the desired iframes there.
Code:
function printIFrames(){
var html='<html><body>';
for (var i=0;i<window.frames.length;i++){
if (window.frames[i].name!="printFrame") html += window.frames[i].document.body.innerHTML;
}
html += '</body></html>';
var printFrame = window.frames["printFrame"];
printFrame.document.write(html);
printFrame.document.close();
printFrame.focus();
printFrame.print();
}
...
<iframe src="page1.htm"></iframe>
<iframe src="page2.htm"></iframe>
...
<iframe name="printFrame" src="about:blank" style="display:none"></iframe>
<input type="button" value="Print" onclick="printIFrames()" />