Javascript parentNode和innerHTML在Firefox中无法正常运行

时间:2011-03-08 07:56:38

标签: javascript html firefox innerhtml

我在Firefox中使用javascript时遇到问题,这里是html:

<HTML>
<BODY>  
        <TABLE align="center">  
            <TR><td><input type=button name=submit onclick="javascript:submitIt()" value="submit" align="center"></td></TR>
            <TD>
                    <TABLE>     
                            <DIV STYLE="display:none position:relative;">   
                                <FORM ID="formA" NAME="formA" METHOD="post" ACTION="b.html" TARGET="_blank">
                                <INPUT TYPE="hidden" NAME=aInput VALUE="1294457296">        
                                </FORM>
                            </DIV>
                </TABLE>
            </TD>
        </TABLE></BODY></HTML>

这是javascript:

    <script language="Javascript">
    function submitIt()
{
    oForm = document.getElementById("formA");
    strRequest = "<HTML><BODY>" + oForm.parentNode.innerHTML + "</BODY></HTML>";
    newDoc = window.open("", "", "");
    newDoc.document.write(strRequest);  
}

问题是当你点击这个html页面中的提交按钮时,你会得到一个带源代码的新html:

<HTML><BODY><form id="formA" name="formA" method="post" action="b.html" target="_blank"></form>
                                <input name="aInput" value="1294457296" type="hidden">  </BODY></HTML>

但它应该是

<HTML><BODY><form id="formA" name="formA" method="post" action="b.html" target="_blank">
                                <input name="aInput" value="1294457296" type="hidden"></form>   </BODY></HTML>

有人可以帮忙吗?真的很感激。谢谢!

2 个答案:

答案 0 :(得分:1)

这是因为你的HTML被严重破坏了,所以你最终得到的DOM由于错误处理而没有达到预期效果 - install Firebug并查看生成的DOM。

<form>包裹在丢失的<tr><td>...</td></tr>中应该会让您更像预期的DOM。

您的外围<table>在第二个<tr>附近也遗漏了<td>

答案 1 :(得分:0)

parentNode和innerHTML在firefox中正常运行,你的问题来自你的html代码无效。