2

以下のコードを chrome でレンダリングすると、問題なく追加されることがわかりますが、IE を使用すると、行が追加されません。IE で動作しないということで、ここで何が間違っているのか教えていただけますか? IE で新しい行を追加すると、新しい行にコントロールが追加されません。これは chrome と firefox では正常に機能しますが、IE では機能しません。IE に特有の何かが欠けていない限り、コードに問題は見つかりませんでした。ご協力ありがとうございます。

<head>
<title></title>
<script type="text/javascript">

    function insertAdditional() {
        var type = document.getElementById('additional_type').value;
        var node = document.createElement('li');
        node.innerHTML = document.getElementById(type + 'Form').innerHTML;
        document.getElementById('additional').appendChild(node);
    }


    function addRow(tableID) {

        var table = document.getElementById(tableID);

        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell1 = row.insertCell(0);
        var element1 = document.createElement("input");
        element1.type = "checkbox";
        element1.name = "chkbox[]";
        cell1.appendChild(element1);

        var cell2 = row.insertCell(1);
        var element2 = document.createElement("input");
        element2.type = "date";
        element2.size = "12";
        element2.maxlength = "10";
        element2.placeholder = "YYYY-MM-DD";
        element2.name = "entrydate[]";
        cell2.appendChild(element2);

        var cell3 = row.insertCell(2);
        var element3 = document.createElement("input");
        element3.type = "date";
        element3.size = "12";
        element3.maxlength = "10";
        element3.placeholder = "YYYY-MM-DD";
        element3.name = "eventdate[]";
        cell3.appendChild(element3);


        var cell4 = row.insertCell(3);
        var element4 = document.createElement("textarea");
        element4.type = "text";
        element4.name = "comment[]";
        element4.rows = "4";
        element4.cols = "60";
        cell4.appendChild(element4);

    }

    function deleteRow(tableID) {
        try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for (var i = 0; i < rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if (null != chkbox && true == chkbox.checked) {
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }


            }
        } catch (e) {
            alert(e);
        }
    }

</script>
</head>
<body>
<h1>
    Comments</h1>
<div>
    <input type="button" value="Add Comment" onclick="addRow('dataTable')" />
    <input type="button" value="Delete Comment" onclick="deleteRow('dataTable')" />     </div>
<table id="dataTable" width="1024px" border="1" cellpadding="10">
    <tr>
        <th>
            <center>
                Choose</center>
        </th>
        <th>
            <center>
                Entry Date</center>
        </th>
        <th>
            <center>
                Event Date</center>
        </th>
        <th>
            <center>
                Comment</center>
        </th>
    </tr>
    <tbody>
        <tr>
            <td>
                <input type="checkbox" name="chk[]" />
            </td>
            <td>
                <input type="date" placeholder="YYYY-MM-DD" size="12" maxlength="10" name="entrydate[]" />
            </td>
            <td>
                <input type="date" placeholder="YYYY-MM-DD" size="12" maxlength="10" name="eventdate[]" />
            </td>
            <td>
                <textarea rows="4" cols="60" maxlength="500" name="comment[]"></textarea>
            </td>
        </tr>
    </tbody>
</table>
</body>
4

3 に答える 3

4

IE は日付入力をサポートしておらず、Opera といくつかの最近のブラウザー以外のブラウザーもサポートしていないためです。Chrome は、Chrome 20 から部分的にサポートされています。

コメントで指摘されているように、IE は入力タイプを変更するときに多少問題があります。IE のデフォルトは ですがtext、問題を回避するために、IEcreateElementはタイプを定義できるHTML 文字列を受け入れます。

//creating a radio button
var newRadioButton = document.createElement("<input type='radio' />");
于 2013-05-05T14:53:32.530 に答える
0

これを試して:

try {
    element2.type = "date";
} catch(e) {
    element2.type = "text";
}

これは、dateそれをサポートするブラウザーで入力を使用し、他のブラウザーにフォールバックしtextます。

于 2013-05-05T15:04:24.593 に答える