document.getElementById/Event Javascript在IE9以外的浏览器中不起作用

document.getElementById/Event Javascript在IE9以外的浏览器中不起作用,javascript,Javascript,我正在努力强迫我的JS在IE8/Mozilla下工作,但是没有运气。 我需要有一个JavaScript,它将数据从excel(一列带有值的单行)复制到html页面的文本框(textbox1,textbox2,…)中。我已经编写了JS脚本,它在IE9中工作。但不是在IE8或Mozilla中。 可能的问题是document.getElementById为空 <script language="javascript" type="text/javascript">

我正在努力强迫我的JS在IE8/Mozilla下工作,但是没有运气。 我需要有一个JavaScript,它将数据从excel(一列带有值的单行)复制到html页面的文本框(textbox1,textbox2,…)中。我已经编写了JS脚本,它在IE9中工作。但不是在IE8或Mozilla中。 可能的问题是
document.getElementById
为空

    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>
有人能帮我解决这个问题吗? 下面是带有js的html页面的代码。先谢谢你

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org     /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
            </div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <br />
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <br />
            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        </form>

        <script language="javascript" type="text/javascript">
            //// javascript is used in order to paste multiple lines data into textboxes
            var textbox_id = 0;
            var clipboard;

            //// count number of textboxes on the page with ReadOnly=false property               
            var count_input_txtbox = 0; 
            var inputs = document.getElementsByTagName('input');
            for (var cpt = 0; cpt < inputs.length; cpt++)
                if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                    { count_input_txtbox++ };

            function processEvent(oEvent) {
                textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
                clip_board = clipboardData.getData('text');
                k = textbox_id;
                clip_board = clip_board.replace('\n', '\r');

                ///clear text of target textbox
                document.getElementById('TextBox' + k).value = ''

                for (var j = 0; j < clip_board.length; j++) {
                    if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                        document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                    } else {
                        j = j + 1;
                        k++;
                        document.getElementById('TextBox' + k).value = ''
                    };
                };
            };

            //execute function processEvent onpaste
            // In case browser is not IE9
            if (!window.addEventListener)
                { window.attachEvent("onpaste", processEvent); }
            else
                // In case browser is IE9
                { window.addEventListener("paste", processEvent, false); }
        </script>
    </body>
</html>
    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>



////javascript用于将多行数据粘贴到文本框中 var textbox_id=0; var剪贴板; ////使用ReadOnly=false属性统计页面上的文本框数 var count\u input\u txtbox=0; var inputs=document.getElementsByTagName('input'); 对于(var cpt=0;cptif((k不要使用asp:TextBox。它是专有的MS代码。最好使用
input
tag。请参阅下面的改进代码

    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>


    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>

////javascript用于将多行数据粘贴到文本框中
var textbox_id=0;
var剪贴板;
////使用ReadOnly=false属性统计页面上的文本框数
var count\u input\u txtbox=0;
var inputs=document.getElementsByTagName('input');
对于(var cpt=0;cpt如果((k您的问题似乎是
标签

    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>
你在Firefox中有文本框吗?HTML代码在Firefox中是什么样子的,在IE中是什么样子的?(右键点击网站并“显示sorcecode”或使用firebug插件。)

    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>
如果您可以使用输入标签,我测试了一个使用IE和Firefox的示例:

    <script language="javascript" type="text/javascript">
        //// javascript is used in order to paste multiple lines data into textboxes
        var textbox_id = 0;
        var clipboard;

        //// count number of textboxes on the page with ReadOnly=false property               
        var count_input_txtbox = 0; 
        var inputs = document.getElementsByTagName('input');
        for (var cpt = 0; cpt < inputs.length; cpt++)
            if (inputs[cpt].type == 'text' && inputs[cpt].id.substring(0, 7) == 'TextBox')
                { count_input_txtbox++ };

        function processEvent(oEvent) {
            textbox_id = (oEvent.target || oEvent.srcElement).id.substring(7,(oEvent.target || oEvent.srcElement).id.length);
            clip_board = clipboardData.getData('text');
            k = textbox_id;
            clip_board = clip_board.replace('\n', '\r');

            ///clear text of target textbox
            document.getElementById('TextBox' + k).value = ''

            for (var j = 0; j < clip_board.length; j++) {
                if ((k <= count_input_txtbox) && (clip_board.substring(j, j + 1) != '\r')) {
                    document.getElementById('TextBox' + k).value = document.getElementById('TextBox' + k).value + clip_board.substring(j, j + 1)
                } else {
                    j = j + 1;
                    k++;
                    document.getElementById('TextBox' + k).value = ''
                };
            };
        };

        //execute function processEvent onpaste
        // In case browser is not IE9
        if (!window.addEventListener)
            { window.attachEvent("onpaste", processEvent); }
        else
            // In case browser is IE9
            { window.addEventListener("paste", processEvent, false); }
    </script>
</body>
<body>
    <form id="form1" runat="server">
        <input type="text" ID="TextBox1">
        <br />
        <input type="text" ID="TextBox2">
        <br />
        <input type="text" ID="TextBox3">
    </form>

    <input type="button" onclick="test()" value="test">

    <script language="javascript" type="text/javascript">
        function test() {
            ///clear text of target textbox
            document.getElementById('TextBox' + 1).value = ''
            document.getElementById('TextBox' + 2).value = ''
            document.getElementById('TextBox' + 3).value = ''
        };
    </script>
</body>



功能测试(){ ///清除目标文本框的文本 document.getElementById('TextBox'+1)。值='' document.getElementById('TextBox'+2).值='' document.getElementById('TextBox'+3).值='' };
你在
k
中得到了正确的值吗?我的一个建议是关于括号(
{}
):永远不要像你在(var cpt
。并将开始括号放在/if/else
etc语句的
后面,将结束括号放在新行上,而不是放在行的末尾。这应该会使代码更可读,就像在
processEvent
函数中一样。我建议对这类事情使用jquery。jquery允许您获取elem在不依赖浏览器的情况下从页面中删除元素(Jquery为您做到了这一点)。document.getElementById(“myid”)变为$(“#myid”)例如谢谢Andreas,您是对的:document.getElementById有效。问题似乎出在另一个代码块中。window.attachEvent无效。。。