Javascript 为什么JS在表单标记之间不执行?

Javascript 为什么JS在表单标记之间不执行?,javascript,forms,input,element,Javascript,Forms,Input,Element,在这个代码块中,它获取用户输入并使用用户输入转到新的url 若我把最后一行移到表单元素中,它就不工作了。 但我使用id查找元素。我怀疑这是因为您的提交按钮正在提交表单 添加e.1.1默认值;并返回false;到您的代码 <script type="text/javascript"> window.onload = init; function init() { //wait for load and watch for click var button = document

在这个代码块中,它获取用户输入并使用用户输入转到新的url

若我把最后一行移到表单元素中,它就不工作了。
但我使用id查找元素。

我怀疑这是因为您的提交按钮正在提交表单

添加e.1.1默认值;并返回false;到您的代码

<script type="text/javascript">
window.onload = init;

function init() { //wait for load and watch for click
    var button = document.getElementById("searchbutton");
    button.onclick = handleButtonClick;
}

function handleButtonClick(e) { //get user input and go to a new url
    var textinput = document.getElementById("searchinput");
    var searchterm = textinput.value;
    window.location.assign("http://google.com/example/" + searchterm)
}
</script>

<form>
    <input type="text" name="search" id="searchinput">  
</form>
<input type="submit" value="Ara" id="searchbutton">

这将阻止表单跨浏览器提交。

我怀疑这是因为“提交”按钮正在提交表单

添加e.1.1默认值;并返回false;到您的代码

<script type="text/javascript">
window.onload = init;

function init() { //wait for load and watch for click
    var button = document.getElementById("searchbutton");
    button.onclick = handleButtonClick;
}

function handleButtonClick(e) { //get user input and go to a new url
    var textinput = document.getElementById("searchinput");
    var searchterm = textinput.value;
    window.location.assign("http://google.com/example/" + searchterm)
}
</script>

<form>
    <input type="text" name="search" id="searchinput">  
</form>
<input type="submit" value="Ara" id="searchbutton">
这将阻止表单跨浏览器提交。

而不是

function handleButtonClick(e) { //get user input and go to a new url
    e.preventDefault();
    var textinput = document.getElementById("searchinput");
    var searchterm = textinput.value;
    window.location.assign("http://google.com/example/" + searchterm)
    return false;
}
用这个

您的按钮用作表单提交按钮,因此它不仅执行JavaScript,还尝试提交表单,表单指向脚本本身。通过使用,您只定义了一个按钮,而没有任何提交功能

此外:如果不需要周围的元素,为什么不将其从代码中删除?

而不是

function handleButtonClick(e) { //get user input and go to a new url
    e.preventDefault();
    var textinput = document.getElementById("searchinput");
    var searchterm = textinput.value;
    window.location.assign("http://google.com/example/" + searchterm)
    return false;
}
用这个

您的按钮用作表单提交按钮,因此它不仅执行JavaScript,还尝试提交表单,表单指向脚本本身。通过使用,您只定义了一个按钮,而没有任何提交功能


此外:如果您不需要周围的元素,为什么不将其从代码中删除?

您可以按照下面的代码片段中的说明指定OnSubmit,它将起作用

<button type="button" id="searchbutton">Ara</button>

您可以按照下面的代码片段中的说明指定OnSubmit,它将正常工作

<button type="button" id="searchbutton">Ara</button>

如果“提交”按钮是表单的一部分,它有助于表单的提交,页面将被刷新。如果“提交”按钮是表单的一部分,它有助于表单的提交,页面将被刷新。@Alex是的,但我相信在我的脑海深处,如果你关心旧浏览器,它们没有默认方法,这是一段完整的代码。谢谢。我会把它作为歌剧的延伸。这有点难。我更喜欢@Sirko的答案。@Imrahil Sirko的答案可能更容易实现,但是当用户关闭javascript时会发生什么?我知道这将是一个非常小的百分比,但你的按钮将不会做任何事情。如果您实现了我的代码,那么您的表单仍将提交,您可以处理此问题。感谢您的解释。我正在编写Opera扩展,所以用户必须打开javascript。还有为什么你把报税表放错了?它的目的是什么?@Alex是的,但我相信在我脑海深处的某个地方,如果你关心旧浏览器,它没有一个preventDefault方法,所以这是一个一应俱全的代码。谢谢。我会把它作为歌剧的延伸。这有点难。我更喜欢@Sirko的答案。@Imrahil Sirko的答案可能更容易实现,但是当用户关闭javascript时会发生什么?我知道这将是一个非常小的百分比,但你的按钮将不会做任何事情。如果您实现了我的代码,那么您的表单仍将提交,您可以处理此问题。感谢您的解释。我正在编写Opera扩展,所以用户必须打开javascript。还有为什么你把报税表放错了?目的是什么?谢谢你的回答和建议。我是新的编码。谢谢你的回答和建议。我对编码是新手。为什么会有返回false?我对编码是新手。为什么会有返回false?我对编码是新手。