答案 0 :(得分:2)
虽然epascarello的评论是最好的方法,但您可以通过将selected
属性添加到与其父级selectedIndex
成员对应的选项中来支持此方法。完成后,打印结果中将显示正确的选项。
这里有一些JS可以解决这个问题:
function byId(id,parent){return (parent == undefined ? document : parent).getElementById(id);}
function allByTag(tagName,parent){return (parent == undefined ? document : parent).getElementsByTagName(tagName);}
function forEachNode(nodeList, func){for (var i=0, n=nodeList.length; i<n; i++) func(nodeList[i], i, nodeList); }
// **** below function updated in an EDIT ****
function setListSelectedAttrib(selectElem)
{
var selectedIndex = selectElem.selectedIndex;
var i, n = selectElem.options.length;
for (i=0;i<n;i++)
{
if (i == selectedIndex)
selectElem.options[i].setAttribute('selected', '');
else
selectElem.options[i].removeAttribute('selected');
}
}
function onPrintClicked(evt)
{
var elemToPrint = byId('print_tbl');
var selectElems = allByTag('select', elemToPrint);
forEachNode(selectElems, eachSelElemFunc);
function eachSelElemFunc(curElem, indexOfCurElem, listOfElems)
{
setListSelectedAttrib(curElem);
}
var newWin = window.open();
newWin.document.write(elemToPrint.outerHTML);
newWin.print();
newWin.close();
}
请看这里的小提琴:https://jsfiddle.net/jpkz0fyp/1/
答案 1 :(得分:1)
您可以尝试使用css媒体查询而不是javascript来确定打印的内容。您可以使用以下代码
开始@media print {
* {
visibility : hidden;
}
.print {
visibility : visible;
}
}
http://jsfiddle.net/k2mtaob2/2/
请注意,在提供的示例中,只有 World 将打印在小提琴中
答案 2 :(得分:-1)
问题是你打印另一个窗口。这将打印当前窗口。
jQuery(document).ready(function(){
jQuery('#print_btn').on('click', function() {
window.print();
});
});