0

我已经创建了一个自动完成(建议)字段,因此当您键入时,您会在该字段下方以文本形式获得建议。我重新构建了 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) 时,我得到了回显但在空白页上的值。当我输入 comeon.innerHTML(data) 时,我得到了 Uncaught TypeError: Cannot call method 'innerHTML' of null。我知道这种类型的错误是因为它找不到元素 comeon 并且它返回 null。此外,我在应回显文本的模态中得到 [object Object]。

有什么帮助吗?谢谢。

4

1 回答 1

0

以下是我可以注意到的一些问题;

comeon = document.getElementById('comeon');

你甚至不使用 comeon div,但你试图在它被创建之前得到它。您在此行下方创建“comeon” div。

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

$.post也是一个异步请求,因此它永远不会返回您要求的任何文本。你应该称之为可能的其他一些事件点击<a data-toggle="modal"。这一次您将能够获得“comeon” div。

希望这可以帮助。

于 2013-03-25T15:48:02.770 回答