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