0

私はこのコードを使用しています

<script type="text/javascript">
function loadXMLDoc()
{
    var testValue = document.getElementById("test").value;  
    document.getElementById("test").value = ++testValue;
    var testValue2 = document.getElementById("test").value; 

var xmlhttp;
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)
    {
        alert("3");
        document.getElementById("loading").style.display = "none"; 
        alert("4");
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
     }
  }
  alert("1");

document.getElementById("loading").style.display = "block"; 

alert("2");
xmlhttp.open("GET","catalog/view/theme/default/template/information/latest_newsroom.php?q="+testValue2,true);
xmlhttp.send();
}
</script>

<form name="testForm" method="post" action="">
    <input type="text" name="test" id="test" value="1"  />
    <input type="button" name="testButton" value="More" onclick="loadXMLDoc()"  />
</form>

エラーが発生します:

TypeError: document.getElementById(...) が null です

私の機能が2回目に実行されるとき。

4

1 に答える 1

1

エラーは正しいです。

あなたが設定しvar testValue = document.getElementById("test").valueました;

したがって、このdocument.getElementById("test").value = ++testValue;

は変数になったtestValue.value = ++testValue;ので、そうあるべきです。testValue

以下は、コメントで提案したものです。

<script type="text/javascript">
function loadXMLDoc()
{
    var testValue = document.getElementById("test").value;  
    document.getElementById("test").value = ++testValue;
    var testValue2 = document.getElementById("test").value; 

var xmlhttp;
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)
    {
        alert("3");
        document.getElementById("loading").style.display = "none"; 
        alert("4");
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
     }
    else
     {
        document.getElementById("loading").style.display = "block";
     }
  }
  alert("1");    


alert("2");
xmlhttp.open("GET","catalog/view/theme/default/template/information/latest_newsroom.php?q="+testValue2,true);
xmlhttp.send();
}
</script>

<form name="testForm" method="post" action="">
    <input type="text" name="test" id="test" value="1"  />
    <input type="button" name="testButton" value="More" onclick="loadXMLDoc()"  />
</form>
于 2013-06-05T05:27:16.077 に答える