简体   繁体   中英

Why does this code not add another field when clicking on the `add another field` input button?

Why does the following code not add another text input field when clicking on the add another field input button?

<html>
<head>
<script>
function add_field() 
{
var elem = document.createElement("input");
elem.setAttribute('type','text');
elem.setAttribute('name','user');
document.body.insertBefore(elem, document.getElementById('su'));
}
</script>
</head>
<body>
<form name="input" method="get">
Put input here:<br> 
<input type="text" name="user">
<input type="button" onclick="add_field()" value="Add another field"><br>
<input id="su" type="submit" value="Submit"><br>
</form>
</body>
</html>

According to the MDN reference page , you need to call parent.insertBefore(newElem, referenceElem) . In your example, I suppose that <form> is the parent, not <body> . Changing the last line of your function to this:

var target = document.getElementById('su');
target.parentNode.insertBefore(elem, target);

will make it work.

jQuery solution here

<form name="input" method="get">
  Put input here:<br> 
  <input id='ap' type="text" name="user">
  <input id="addField" type="button" value="Add another field"><br>
  <input id="su" type="submit" value="Submit"><br>
</form>

JavaScript

$('#addField').click(function(e)
{
    $('<input type="text" />').insertBefore('#su')
});​​

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM