2013-09-12 5 views
-3

TypeError: document.getElementById (...) имеет значение null, когда я нажимаю кнопку для создания для продолжения этой ошибки, генерируется любая из них, пожалуйста, скажите мне, как исправить эту ошибку.ТипError: document.getElementById (...) имеет значение null, в RSForms

когда я нажмите кнопку для продолжения, кнопку вызова fnction SubmitForm

<script type="text/javascript"> 

    function submitForm() 
    { 

     var form = document.paywayForm; 
     var errorString = ""; 
     var recurringURL = "https://www.payway.com.au/SignUp?ClientNumber=Q12882&&merchant_id=23660327&FirstPaymentDate=&CustomerNumber=&returnURL=&AddressRequired=true&PlanName="; 
     // NOTE: THIS USES A TEST MERCHANT!! 
     var netURL = "https://www.payway.com.au/MakePayment?BillerCode=128827&merchant_id=23660327&payment_amount="; 
      if(document.getElementById("RecurringRadio").checked == true) 
     { 
      if(document.getElementById("frequency1").value == null || document.getElementById("frequency1").value == "") 
      { 
       errorString = errorString + " payment frequency"; 
      } 
      if(document.getElementById("SelectAmount1").value == null || document.getElementById("SelectAmount1").value == "") 
      { 
       errorString = errorString + " payment amount"; 
      } 
      if(errorString == "") 
      { 
       document.location = recurringURL + document.getElementById("frequency1").value + document.getElementById("SelectAmount1").value + 
            "&Firstname=" + document.getElementById("OneOffAmount1").value; 
      } 
     } 

     else if(document.getElementById("OneOffRadio").checked == true) 
     { 
      if(document.getElementById("OneOffAmount1").value == null || document.getElementById("OneOffAmount1").value == "") 
      { 
       errorString = errorString + "payment amount &nbsp; &nbsp;"; 
      } 
      if(document.getElementById("Firstname").value == null || document.getElementById("Firstname").value == "") 
      { 
       errorString = errorString + "name &nbsp; &nbsp;"; 
      } 
      if(document.getElementById("Surname").value == null || document.getElementById("Surname").value == "") 
      { 
       errorString = errorString + "surname &nbsp; &nbsp;"; 
      } 
      if(document.getElementById("Address").value == null || document.getElementById("Address").value == "") 
      { 
       errorString = errorString + "address &nbsp; &nbsp;"; 
      } 

      if(document.getElementById("Suburb").value == null || document.getElementById("Suburb").value == "") 
      { 
       errorString = errorString + "suburb &nbsp; &nbsp;"; 
      } 
      if(document.getElementById("Postcode").value == null || document.getElementById("Postcode").value == "") 
      { 
       errorString = errorString + "postcode &nbsp; &nbsp;"; 
      } 
      if(errorString == "") 
      {  

       var newredirect = netURL + document.getElementById("OneOffAmount1").value + 
"&information_fields=Direct_Funds,Title,Firstname,Surname,Address,Suburb,Postcode,State,Country,Phone,Mobile,Email,Bmail,PAWS&payment_reference=00041234" + 
            "&Direct_Funds=" + document.getElementById("Direct_Funds").value + 
            "&Title=" + document.getElementById("Title").value + 
            "&Firstname=" + document.getElementById("Firstname").value + 
            "&Surname=" + document.getElementById("Surname").value + 
            "&Address=" + document.getElementById("Address").value + 
            "&Suburb=" + document.getElementById("Suburb").value + 
            "&Postcode=" + document.getElementById("Postcode").value + 
            "&State=" + document.getElementById("State").value + 
            "&Country=" + document.getElementById("Country").value + 
            "&Phone=" + document.getElementById("Phone").value + 
            "&Mobile=" + document.getElementById("Mobile").value + 
            "&Email=" + document.getElementById("Email").value + 
            "&Bmail=" + document.getElementById("Bmail").value + 
            "&PAWS=" + document.getElementById("PAWS").value; 
           // alert(newredirect); 
           document.paywayForm.submit(); 
       /* document.location.href = newredirect;*/ 
      } 
     } 
     else 
     { 
      errorString = errorString + "You must select a donation type<br/>"; 
     } 

     if(errorString != "") 
     { 
      //alert(errorString); 
      var errorEl = document.getElementById("Error"); 
      errorEl.innerHTML = "<b>The following fields must be completed: </b><br/> " + errorString + ""; 
      //alert(errorEl.innerHTML); 
     } 
    } 


</script> 
+0

вы можете показать HTML-код? – Shadow

+0

Кажется, что ваш документ не готов, когда вы получаете 'getElementById'. – hallaji

+0

задавая вопрос, должен быть ясным. Увидев ваш вопрос, у меня есть много вопросов, чтобы спросить вас. Это не должно быть так. – Sasidharan

ответ

0

Попробуйте это,

<script> 
    window.onload=function(){ 

    if(document.getElementById("frequency1").value == null || document.getElementById("frequency1").value == "") /* error occuer here */ 
    { 
    errorString = errorString + " payment frequency"; 
    } 

    }; 
</script> 
+0

спасибо за помощь в тени, но он не работает – gayatri

+0

@gayatri вы пытаетесь получить значения поля выбора с именем частота? – Shadow

+0

спасибо тень Я решил проблему на самом деле их проблема не пропускать идентификатор в поля, теперь я назначил все поля id, и он работает нормально – gayatri

0

Internet Explorer чувствителен к регистру, насколько идентификаторы обеспокоены. Но не Mozilla и другие. Убедитесь, что идентификатор правильно указан в коде. Должно точно совпадать в случае.

+1

Это не ответчик. Это комментарий. – Harry

0

Эта ошибка возникает, когда ваш элемент равен NULL (не существует). Поэтому javascript не может получить его значение. Вы можете сначала получить элемент, а затем проверить, является ли он нулевым или нет, а затем запрашивать его значение, а не просто запрашивать значение напрямую, не зная, является ли этот элемент видимым в HTML или нет.

element1 = document.getElementById("frequency1"); 

if(element1 != null) 
{ 
    //code to set the value variable and test the value not to be empty. 
} 
+0

Я решил проблему на самом деле, это проблема не пропускания идентификатора в поля, теперь я назначил все поля id, и он работает нормально – gayatri

2

Предполагая, что вы ищете падения вниз с name в frequency, вы должны получить элемент по имени -

if(document.getElementsByName("frequency")[0] == null 
    || document.getElementsByName("frequency")[0].selectedIndex == 0 ) 
{ 
    /* error occuer here */ 
    errorString = errorString + " payment frequency"; 
} 

Поскольку у вас уже есть раскрывающийся на странице, проверка на Значение NULL всегда будет ложным, а выбранное значение будет первым выпадающим значением, поэтому выбранный индекс всегда будет 0, если пользователь не изменит его. Таким образом, нет никакого смысла в проверке выше, поскольку элемент не будет пустым, а выбранный индекс будет 0 для частоты week.

Вместо этого вы должны добавить еще один вариант для выбора, который пуст, а затем использовать приведенный ниже код, чтобы узнать, выбрал ли пользователь значение частоты оплаты.

HTML должен выглядеть

<select name="frequency" class="drop" style="width: 80px;"> 
    <option value="" selected>Select frequency</option> 
    <option value="Weekly">Week</option> 
    <option value="Fortnightly">Fortnightly</option> 
    <option value="Monthly">Month</option> 
</select> 

и вы JS код проверка должны выглядеть

if(document.getElementsByName("frequency")[0].selectedIndex == 0 ) 
{ 
    /* error occuer here - frequency not selected */ 
    errorString = errorString + " payment frequency"; 
} 

Надеется, что это помогает.

+1

+1, поскольку я собирался опубликовать тот же самый параметр. Еще одна вещь, которую я хотел предложить, заключается в добавлении 'id = 'frequency'' в этот' select', но нужно отметить, что выше 'div' уже имеет этот' id'. – Harry

+0

Я решил проблему на самом деле их проблема не передавать идентификатор в поля, теперь я назначил все поля id и работает нормально – gayatri

0

Я тоже испытал эту неприятную проблему, и вы также можете изменить порядок элементов, чтобы элемент появился перед JS. Возможно, JS еще не может найти элемент, потому что он не загружен вовремя или вы можете загрузить его и выполнить JS с помощью функции document.ready или подобного.

Обычно наши страницы работают так:

<head> 
<scripts> 
<body> 
<elements> 
<end> 

Может быть, если вы попытаетесь это так, он будет работать:

<head> 
<scripts> 
<body> 
<elements> 
<script for elements> 
<end> 
Смежные вопросы