gpt4 book ai didi

javascript - Chrome 功能正常工作,除非您第一次单击它

转载 作者:行者123 更新时间:2023-12-02 18:40:11 25 4
gpt4 key购买 nike

我创建了一个 JavaScript onclick 函数。它在 Firefox 中运行良好。但在 Chrome/IE 中,除非您第一次单击它,否则该功能正常工作。我的代码如下:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>

function KeepCount() {

var mytextbox = document.getElementById('onclickval1');
var myform = document.getElementById('compare-meet');
var inputElems = myform.getElementsByTagName("input");
for (var i=0; i<inputElems.length; i++) {
inputElems[i].onchange = function(){
if(this.checked){

mytextbox.value += this.value +",";
s = document.getElementById("onclickval1").value;
n = s.split(',').length;
if (n > 5)
{
alert('Pick Just Four Please!')
this.checked = false
mytextbox.value = mytextbox.value.replace(this.value+",", "")
document.comparepage; return false;
}
if (n < 3)
{
document.getElementById('compsend').disabled=true;
}
if (n > 2)
{
document.getElementById('compsend').disabled=false;
}
}else{
mytextbox.value = mytextbox.value.replace(this.value+",", "");
s = document.getElementById("onclickval1").value;
n = s.split(',').length;
if (n < 3)
{
document.getElementById('compsend').disabled=true;
}
if (n > 2)
{
document.getElementById('compsend').disabled=false;
}
}
}
}
}
</script>
</head>

<body>
<form id="compare-meet" action="" name="comparepage" method="post">
<input id="onclickval1" type="text" value="" name="getval1" size="30">
<table id="datatable-1" class="views-table">
<thead>
<tr role="row"><th class="sorting_disabled" role="columnheader" rowspan="1" colspan="1" aria-label="
">
<span id="compbutt"><input id="compsend" title="Select atleast 2 school to compare" disabled="" type="submit" value="Compare &amp; Meet" name="compare"></span> </th></tr>
</thead>

<tbody role="alert" aria-live="polite" aria-relevant="all"><tr class="views-row-first odd">
<td class="">
<input onclick="KeepCount()" class="5353" id="compare" type="checkbox" value="5353"> </td>
</tr><tr class="even">
<td class="">
<input onclick="KeepCount()" class="5357" id="compare" type="checkbox" value="5357"> </td>
</tr><tr class="odd">
<td class="">
<input onclick="KeepCount()" class="5533" id="compare" type="checkbox" value="5533"> </td>
</tr><tr class="even">
<td class="">
<input onclick="KeepCount()" class="5793" id="compare" type="checkbox" value="5793"> </td>
</tr><tr class="odd">
<td class="">
<input onclick="KeepCount()" class="5563" id="compare" type="checkbox" value="5563"> </td>
</tr></tbody></table>
</form>
</body>
</html>

最佳答案

keepCount() 方法用于注册更改事件处理程序,因此您需要在文档加载时执行它,而不是在单击输入元素时执行。

所以,当第一次点击发生时,没有注册 onchange 事件处理程序,因此它不会被触发,然后它会注册一个 onchange 事件。当第二次单击发生时,您注册了一个 onchange 事件处理程序,因此它会被触发
问题在于,当您继续执行 KeepCount 方法时,每次单击都会使 onchange habdler 多次触发

例如:

function KeepCount() {

var mytextbox = document.getElementById('onclickval1');
var myform = document.getElementById('compare-meet');
var inputElems = myform.getElementsByTagName("input");
for (var i=0; i<inputElems.length; i++) {
inputElems[i].onchange = function(){
if(this.checked){

mytextbox.value += this.value +",";
s = document.getElementById("onclickval1").value;
n = s.split(',').length;
if (n > 5)
{
alert('Pick Just Four Please!')
this.checked = false
mytextbox.value = mytextbox.value.replace(this.value+",", "")
document.comparepage; return false;
}
if (n < 3)
{
document.getElementById('compsend').disabled=true;
}
if (n > 2)
{
document.getElementById('compsend').disabled=false;
}
}else{
mytextbox.value = mytextbox.value.replace(this.value+",", "");
s = document.getElementById("onclickval1").value;
n = s.split(',').length;
if (n < 3)
{
document.getElementById('compsend').disabled=true;
}
if (n > 2)
{
document.getElementById('compsend').disabled=false;
}
}
}
}
}

window.onload = KeepCount;

并从复选框中删除onclick="KeepCount()"

演示:Fiddle

关于javascript - Chrome 功能正常工作,除非您第一次单击它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com