JavaScript getElementByName не работает

Этот простой JS не может установить значение "para". Я думаю, getElementByName не работает. Но почему?

<script>
function fn()  
{   
    document.getElementById("para").setAttribute("name","hi");  
    document.getElementByName("hi").setAttribute("value","my value is high");  
}  
</script>

HTML:

<input type="button" onClick="fn()" value="click me">
<input id="para" type="text" />

5 ответов

Решение

Это getElementsByName, Обратите внимание на множественное число. Он возвращает массив, как NodeList элементов с этим name приписывать.

getElementsByName существует, который возвращает коллекцию элементов. Если вы планируете найти только один:

document.getElementsByName("hi")[0].setAttribute("value", "my value is high");

Изменить: а, HTML там (не видел это до редактирования). В HTML нет элемента hi, возможно, в каком-то XML-формате...

Не getElementByName но getElementsByNameи возвращает массив.

<html>
<head>
    <script language="javascript">
        function fn() {
            document.getElementById("para").setAttribute("name","hi");
            x = document.getElementsByName("hi");
            x[0].setAttribute("value","my value is high");
        }
    </script>
</head>
<body onload="fn()">
    <input type="text" id="para" />
</body>
</html>

Кроме того, я считаю, что тип документа должен быть объявлен, чтобы заставить работать getelementsbyname.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<script>
$(document).ready(function(){
$("#insert_form").on('submit',function(event){
  event.preventDefault();

var d_name = $("#d_name").val();
var d_gender = $("#d_gender").val();
var d_address = $("#d_address").val();
var d_mobile = $("#d_mobile").val();
var d_specialization = $("#d_specialization").val();
var d_charge = $("#d_charge").val();
var date = $("#date").val();


// Returns successful data submission message when the entered information is stored in database.
var dataString = 'd_name1='+d_name + '&d_gender1='+d_gender + '&d_address1='+ d_address + '&d_mobile1='+ d_mobile + '&d_specialization1='+ d_specialization + '&d_charge1='+ d_charge + '&date1='+ date ;


if(dataString=='')
{
alert("Please Fill All Fields");
}
else
{
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "<?php echo base_url('predefined/create_adddoctor');?>",
data:dataString,
cache: false,
success: function(result){
alert('Doctor Added Successfully Thankyou');
window.location.href="<?php echo base_url('predefined/adddoctor');?>";
}
});
}
return false;
});
});
</script>
Другие вопросы по тегам