Javascript onClick事件不工作-JS

Javascript onClick事件不工作-JS,javascript,php,Javascript,Php,我正在编写一个非常简单的搜索函数,它将根据用户选择的内容从数据库返回类似的结果,尽管在测试onClick函数时,它不起作用,我已经用这些类似的函数检查了我的代码,它应该起作用,我在问这个问题之前进行了搜索,尽管没有解决方案,这是一个代码示例` <form> <fieldset> <legend>Search Form..</legend> <input type="text" id="itemID" name="itemNam

我正在编写一个非常简单的搜索函数,它将根据用户选择的内容从数据库返回类似的结果,尽管在测试onClick函数时,它不起作用,我已经用这些类似的函数检查了我的代码,它应该起作用,我在问这个问题之前进行了搜索,尽管没有解决方案,这是一个代码示例`

<form>
<fieldset>
    <legend>Search Form..</legend>
    <input type="text" id="itemID" name="itemName" placeholder="Enter item name.." />
    <select id="locSelect">
    <option id="loc1" value="mountain"> mountain </option>
    </select>
    </br>
    <input type="button" id="searchID" name="searchName" value="Search" onClick="runsearch();" />


</fieldset>
</form>

<div id="searchResult"></div>

<script type="text/javascript">

function runsearch()
{
    var item = $("#itemID").val();

    var location = document.getElementById("#locSelect");
    var selectedLoc = location.options[location.selectedIndex].text;

    if(item == '') 
    {
       alert("Item field is blank please specify an item");
    }

    else { $.post("LSR.php", {
        postitem = item,
        postlocation = selectedLoc },

        function(data)
        {
            $("#searchResult").html(data);
        });
    }
}
</script>
它应该将用户选择的内容发送到php页面,在那里它将与数据库进行比较,我为登录/注册页面编写了类似的代码,它工作了,我不确定为什么这个没有,唯一不同的是选择,选项。。我想知道我做错了什么。
提前感谢您的帮助。

您的函数中有语法错误。使用以下命令:

else { $.post("LSR.php", {
    postitem: item,
    postlocation: selectedLoc },
与此相反:

else { $.post("LSR.php", {
    postitem = item,
    postlocation = selectedLoc },
您还有一个错误:

var location = document.getElementById("#locSelect");
应该是:

var location = document.getElementById("locSelect");

然后用onClick将函数放在按钮之前。

在关闭标记之前,您需要关闭标记,它们已经坏了。

这里有一个陷阱22,如果将函数放在表单上方,则DOM中还不存在itemID。如果将函数放在表单下面,则函数runsearch还不存在

为什么不使用:

$(document).ready(function(){
    $(document).on("click", "#searchID", function(e){
        console.log("clicked!"); //watch console for this, delete this line once you know it works.
        runsearch();
    });
});
另外,您的代码也有一些错误,包括在另一个答案中提到的冒号/等号。我把它清理了一点

这是错误的: document.getElementByIdlocSelect

如果使用的是document.getElementById,则不需要。这是一个jQuery id选择器。但是,您正在使用jQuery,所以请接受它!jQuery中document.getElementById的等价物只是$IDOFELEMENT

所有这些位置。选项[location.selectedIndex]。文本可以缩短为:location.val,但我始终使用$作为jQuery对象的前缀,因此很明显它们是jQuery对象,因此我将变量重命名为$location

这是一把小提琴:


尝试在您使用它的输入标记之前声明您的runsearch函数。该命令无效,搜索按钮仍然没有输出。Select仅允许包含选项和选项组。我仍在关注其他问题,但根据经验,这可能会导致各种奇怪的问题。Select元素很特别,有一些奇怪的细微差别。我以前试过,将按钮切换到Select或它自己的形式,除了让它看起来很奇怪之外,什么都不做,输入在结束选择标记之外。我现在正在阅读链接,谢谢。谢谢,我没有注意到,但是搜索仍然没有输出,没有警报functioning@CarlosSakr您是否加载了jquery库?是的,仔细检查了所有页面上是否有错误,没有。@CarlosSakr我发现了另一个错误。看一下更新删除工作,谢谢,函数的位置不重要谢谢!它现在已经工作了,函数的位置无关紧要,问题在于删除它或使用代码是否有效。question location.val将给出选项中的文本或其值?如果使用我的代码,函数的位置将不再重要,因为$document.ready将等待加载整个DOM。然而,在原始Javascript中,位置就是一切。这就是为什么人们使用jQuery之类的东西,甚至将代码放入window.onload=function。但是,同样,您使用的是jQuery,所以请全力以赴!在jQuery中执行的大多数操作都必须在$document.ready函数中。但是,将您编写的其他函数放在它之外。您看过我的小提琴了吗?是的,但是我的代码在没有$document的情况下工作。就绪部分,如果我更改为location.val而不是location.options[location.selectedIndex]。text您使用Firebug吗?如果没有,你应该开始。控制台会告诉你很多事情,尤其是错误。您还可以console.log整个对象并查看其所有部分!