雖然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/
問題是,你只能通過推HTML到打印窗口。不幸的是,'
CSS打印媒體,不需要打開窗口並設置內容。 – epascarello