【问题标题】:Javascript onclick not called on some computers在某些计算机上未调用 Javascript onclick
【发布时间】:2012-12-22 23:44:14
【问题描述】:

我有一个VB.NET网页,当检查或未选中,当DataGrid视图中的复选框时调用JavaScript函数。该代码在我的计算机上运行良好,也适用于更多人。但是对于大多数人来说,当他们选中或取消选中复选框时,根本不会调用 javascript 函数。所有这些计算机都是 Windows 7 并使用 IE 9。我还检查了 IE->Internet 选项->高级选项卡,这些计算机上的设置相同。在这一点上,我对此一无所知,谷歌也没有返回任何有用的结果。如果有人可以帮助我解决此问题,我将不胜感激。如果有帮助,这里是 javascript 函数的代码。

function SelectLineItem(pRowIndex)
{
    var vGridView=document.getElementById('dgvFSOView');
    var vLen=vGridView.rows.length;
    var i=parseInt(pRowIndex)+1;
    var intcount;
    var vtxtFcheckbox=vGridView.rows[parseInt(pRowIndex)].cells[0].getElementsByTagName("input")[0].id;
    var vFCheckbox=document.getElementById(vtxtFcheckbox); 
    var browser=navigator.appName;
    for(intcount=i;intcount<=vLen-1;intcount++)
    {
        if ((document.getElementById('hifCheck').value=="ALL") || (document.getElementById('hifCheck').value=="-1"))
        {
            var vtxtSONO=vGridView.rows[intcount].cells[3].innerText;
        }
        else if((document.getElementById('hifCheck').value!="ALL") || (document.getElementById('hifCheck').value=="-1"))
        {
            var vtxtSONO=vGridView.rows[intcount].cells[2].innerText;
        }
        if(vtxtSONO=="")
        {     
           if ((document.getElementById('hifCheck').value=="ALL") || (document.getElementById('hifCheck').value=="-1"))
           {
               var vtxttocheckbox=vGridView.rows[intcount].cells[14].getElementsByTagName("input")[0].id;
            }
            else
            {
                var vtxttocheckbox=vGridView.rows[intcount].cells[13].getElementsByTagName("input")[0].id;
            }
            var vTCheckbox=document.getElementById(vtxttocheckbox); 

            if(vFCheckbox.checked==true)
            {
                vTCheckbox.checked=true;
            }
            else
            {
                vTCheckbox.checked=false;
            }
      }
      else
      {
       return false;
      }

}

}

【问题讨论】:

    标签: javascript .net


    【解决方案1】:

    这可能是用户对其计算机的权限存在问题。安全设置具有不同级别的权限,这取决于用户如何设置他们的机器。

    如果您在本地运行代码(即:双击本地 .html 文件),您通常需要先启用 Javascript,然后任何 javascript 才能在页面上运行。如果它托管在网站上(即:www.example.com/mypage.asp),那么这应该不是问题。

    你是怎么调用这个函数的?您可能还想尝试使用 IE 内置的开发人员工具来查看是否发生任何错误,这会阻止您的脚本完成。

    使用像 jQuery 这样的跨浏览器兼容框架可能会帮助您触发复选框更改事件,但根据您的项目的复杂程度,可能会有些过头了。

    【讨论】:

    • 这个javascript函数被添加到RowDataBound中datagridview每一行的复选框中。这是来自 RowDataBound 的代码 sn-p。 Dim vChk As CheckBox = (CType((e.Row.FindControl("chk")), CheckBox)) vChk.Attributes.Add("onclick", "SelectLineItem('" & e.Row.RowIndex & "'); ")
    • 我在这里无法理解的是,在我对上面提到的 javascript 函数进行了微小的更改之前,相同的代码曾经可以在所有机器上运行。原始代码 var i=parseInt(pRowIndex)+2;变量计数; var vtxtFcheckbox=vGridView.rows[parseInt(pRowIndex)+1].cells[0].getElementsByTagName 改变后 var i=parseInt(pRowIndex)+1;变量计数; var vtxtFcheckbox=vGridView.rows[parseInt(pRowIndex)].cells[0].getElementsByTagName
    • 我认为如果您使用 jQuery 来处理这些功能,您更有可能获得成功,因为它们可以处理任何跨浏览器兼容性问题。 www.jquery.com
    【解决方案2】:

    复选框不能可靠地触发click 事件。将您的函数绑定到复选框的 change 事件。

    【讨论】:

    • 谢谢你,我完全同意你的看法。但是,这是一个现有的应用程序,这个问题是由我对 javascript 函数所做的更改(在我对这篇文章的另一个答案的评论中提到的)引起的。如果我无法解决 javascript 错误,我会切换到服务器端事件。
    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2014-07-02
    • 2011-12-22
    • 1970-01-01
    • 2017-09-01
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多