IE和Safari中的javascript和ajax问题

时间:2012-03-06 13:26:53

标签: php javascript

我在javascript中创建了一个代码来帮助我管理我的页面,但它似乎在IE和Safari中有一些问题,它在firefox中运行得很好,就像平常一样,但在其他浏览器中无效。 函数切换是选择所有visisle复选框,发送短信将捕获复选框的所有值并转到另一个链接,过滤表将有助于过滤表格中的内容。

    <script type="text/javascript">
function toggle() {
  var checkboxes = document.getElementsByName('parasms');
  for each(var checkbox in checkboxes)
    checkbox.checked = true;
}
function toggle2() {
   var checkboxes = document.getElementsByName('parasms');
  for each(var checkbox in checkboxes)
    checkbox.checked = false;
}

function sendsms()
{
    var counter = 0,
        i = 0,  
        url = '', 
        input_obj = document.getElementsByTagName('input');
    for (i = 0; i < input_obj.length; i++) {
        if (input_obj[i].type === 'checkbox' && input_obj[i].checked === true) {
            counter++;
            url = url + ', ' + input_obj[i].value;
        }
    }
    if (counter > 0) {
        url = url.substr(1);
        window.location.href = 'enviarsms.php?num=' + url; 
    }
}
function clean()
{
         document.getElementById('empresa').value="";
         document.getElementById('numero').value="";
         document.getElementById('utilizador').value="";
         document.getElementById('pontos').value="";
         document.getElementById('movel').value="";
         document.getElementById('actividade').value="";
         document.getElementById('email').value="";   
}
function filtertable(idElm)
{         
var empresa=document.getElementById('empresa').value;
var numero=document.getElementById('numero').value;
var utilizador=document.getElementById('utilizador').value;
var localidade=document.getElementById('localidade').value;
var pontos=document.getElementById('pontos').value;
var movel=document.getElementById('movel').value;
var actividade=document.getElementById('actividade').value;
var email=document.getElementById('email').value;

if (empresa=="" && numero==""&& utilizador=="" && localidade=="" && movel=="" && actividade=="" && email=="" && pontos=="")
  {
   window.location = "../index.php";
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
   xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    { 
         document.getElementById('tbl1').innerHTML=xmlhttp.responseText;
         document.getElementById(idElm).focus();
         document.getElementById('empresa').value=empresa;
         document.getElementById('numero').value=numero;
         document.getElementById('utilizador').value=utilizador;
         document.getElementById('localidade').value=localidade;
         document.getElementById('pontos').value=pontos;
         document.getElementById('movel').value=movel;
         document.getElementById('actividade').value=actividade;
         document.getElementById('email').value=email;        
         return;
    } 
  }
xmlhttp.open("GET","filtertable.php?empresa="+empresa+"&&numero="+numero+"&&utilizador="+utilizador+"&&localidade="+localidade+"&&pontos="+pontos+"&&movel="+movel+"&&actividade="+actividade+"&&email="+email+"&&random=" + Math.random(), true);
xmlhttp.send();
}
</script>
    <table width="2000" border="0" cellspacing="2" cellpadding="2" align="center" id="tbl1" name="representantes" class="table1">  
    <tr><td colspan="9"><a href="inserirrepresentante.php">Inserir Representante</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" onclick="sendsms()">Enviar SMS</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" onclick="toggle();">Seleccionar tudo</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" onclick="toggle2();">Desselecionar</a></td></tr>
    <tr style="background-color: grey;color:white;text-align: center;"><th style="text-align:center;">Acções</th><th>Empresa</th><th style="text-align:center;">Numero</th><th style="text-align:center;">Utilizador</th><th style="text-align:center;">Localidade</th><th style="text-align:center;">Pontos</th><th style="text-align:center;">Telefone Movel</th><th style="text-align:center;">Actividade</th><th style="text-align:center;width: 160px; max-width: 160px;overflow-x: hidden;">Email</th></tr>
    <tr>
    <th></th>    
    <th><input size="45" type="text" id="empresa" onkeyup="filtertable('empresa')" style="border:1px dashed black;"/></th>
    <th><input size="10" type="text" id="numero" onkeyup="filtertable('numero')" style="border:1px dashed black;" /></th>
    <th><input size="25" type="text" id="utilizador" onkeyup="filtertable('utilizador')" style="border:1px dashed black;" /></th>
    <th><input size="15" type="text" id="localidade" onkeyup="filtertable('localidade')" style="border:1px dashed black;" /></th>
    <th><input size="10" type="text" id="pontos" onkeyup="filtertable('pontos')" style="border:1px dashed black;" /></th>
    <th><input size="20" type="text" id="movel" onkeyup="filtertable('movel')" style="border:1px dashed black;"/></th>
    <th><input size="30" type="text" id="actividade" onkeyup="filtertable('actividade')" style="border:1px dashed black;" /></th>
    <th><input size="50" type="text" id="email" onkeyup="filtertable('email')" style="border:1px dashed black;" /></th>
    </tr>

这一切都不起作用firefox.In Internet Explorer我在所有这些中得到错误我得到这个错误:

is not defined or is null.
过滤表中的

错误已打开:

document.getElementById('tbl1').innerHTML=xmlhttp.responseText; 

根据IE,并且在切换时我在

中调用函数时出现错误
onkeyup="filtertable('empresa')"

有人可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

这是人们使用像jQuery这样的JavaScript框架的主要原因。

http://jquery.com/

.getElementsByname等基本功能,对于每个,checkbox.checked在这些框架中进行了规范化,以实现跨浏览器兼容性。