显示JavaScript值问题


Display JavaScript value problems

我做了一个自动补全(建议)字段,所以当你输入时,你会在字段下面得到建议作为文本。我重建了javascript,我已经使文本可点击。所以当你点击一个模态出现(另一个小对话框)

所有我想要的是显示文本从建议字段到模态。我使用$.post("thesuggtest.php")方法,因为我需要获得所选的建议文本(将被点击),并通过php &mysql .

这是我使用的主要JavaScript,但我有一些问题。

function showHint(str)
        {
        if (str.length==0)
          { 
          document.getElementById("txtHint").innerHTML="";
          return;
          }
        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)
            {
            comeon = document.getElementById('comeon');
            document.getElementById('predlozi').innerHTML='<a data-toggle="modal" data-backdrop="static" href="#myMail" class="label ttip_b" title="New messages">' + xmlhttp.responseText + '</a><div class="modal hide fade" id="myMail"><div class="modal-header"><button class="close" data-dismiss="modal">×</button><h3>New messages</h3></div><div class="modal-body"><div id="comeon"></div>' + $.post("thesuggtest.php", { 'suggestion' : xmlhttp.responseText },function(data){comeon.innerHTML(data);console.log('Error:', data);}); + '</div></div>';
            }
          }
        xmlhttp.open("GET","gethint.php?q="+str,true);
        xmlhttp.send();
        }

我使用gethint.php文件从字段中检索与输入值匹配的建议(我从数组中获取它们)。问题是我不能在模态(对话框)中回复文本。

当我把document.write(data)我得到的值回声,但在空白页上。当我把come .innerHTML(数据)我得到未捕获的TypeError:不能调用null的方法'innerHTML'。我知道这种类型的错误是因为它找不到元素comeon,它返回null。我也得到[object object]在模态中,回声文本应该是。

帮忙吗?谢谢。

我注意到一些问题;

comeon = document.getElementById('comeon');

您甚至不使用comeondiv,但您试图在创建它之前获得它。在这行下面创建"comeon"div

$.post("thesuggtest.php", { 'suggestion' : xmlhttp.responseText },function(data){comeon.innerHTML(data);console.log('Error:', data);});

$.post也是一个异步请求,因此它永远不会返回您正在请求的任何文本。你应该把它叫做<a data-toggle="modal"的其他事件点击。这一次你可以得到"comeon"div。