亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在將調用第一個函數的第二個函數中調用第一個函數

在將調用第一個函數的第二個函數中調用第一個函數

慕妹3146593 2021-11-04 16:04:22
我需要調用 addPatron 函數,該函數將從 addpatron 函數中調用 validateItems 函數。當我單擊 addPatron 按鈕時,它應該提交表單,除非未輸入數據。但是我遇到了麻煩,因為當單擊按鈕而不添加信息時,我收到錯誤消息,但是當我輸入信息時,錯誤消息仍然存在并且表單不會提交。我不確定我是否正確地從 ValidateItem 函數調用 addPatron 函數。請幫忙。這是代碼。var $ = function (id) {  return document.getElementById(id)}var validateItems = function () {  addpatron()  var isValid = true  var firstName = $('firstname').value  $('firstname').focus() // puts crusor on field  if (firstName == '') {    $('firstnameerror').innerHTML = 'Enter First Name'    isValid = false  }  var lastName = $('lastname').value  if (lastName == '') {    $('lastnameerror').innerHTML = 'Enter Last Name'    isValid = false  }  var myEmail = $('email').value  if (myEmail == '') {    $('emailerror').innerHTML = 'Enter Email'    isValid = false  }  var myCity = $('city').value  if (myCity == '-') {    $('cityerror').innerHTML = 'Select a City from the list'    isValid = false  }  var myDonation = $('donation').value  if (myDonation == '') {    $('donationerror').innerHTML = 'Enter Donation Amount'    isValid = false  } else if (isNaN(myDonation)) {    $('donationerror').innerHTML = 'Amount must be numeric'    isValid = false  }  return isValid}var addpatron = function () {  var isValid = validateItems  if (isValid == true) {    $('myform').submit()  } else {    $('endmessage').innerHTML = 'Patron Not Added!'  }}var clearfields = function () {  firstname.value = ''  lastname.value = ''  email.value = ''  city.value = '-'  donation.value = ''  firstnameerror.innerHTML = ''  lastnameerror.innerHTML = ''  emailerror.innerHTML = ''  cityerror.innerHTML = ''  donationerror.innerHTML = ''  endmessage.innerHTML = ''}window.onload = function () {  $('validateItems').onclick = addPatron  $('firstname').focus() // puts the crusor on field  $('clearfields').onclick = clearfields}
查看完整描述

2 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

你并不需要調用addPatron的validateItems,但你確實需要調用validateItems的addPatron:-)


var validateItems = function () {

  // addpatron() // don't call this


  var isValid = true


  var firstName = $('firstname').value

  $('firstname').focus() // puts crusor on field


  if (firstName == '') {

    $('firstnameerror').innerHTML = 'Enter First Name'

    isValid = false

  }


  var lastName = $('lastname').value


  if (lastName == '') {

    $('lastnameerror').innerHTML = 'Enter Last Name'

    isValid = false

  }


  var myEmail = $('email').value


  if (myEmail == '') {

    $('emailerror').innerHTML = 'Enter Email'

    isValid = false

  }


  var myCity = $('city').value


  if (myCity == '-') {

    $('cityerror').innerHTML = 'Select a City from the list'

    isValid = false

  }


  var myDonation = $('donation').value


  if (myDonation == '') {

    $('donationerror').innerHTML = 'Enter Donation Amount'

    isValid = false

  } else if (isNaN(myDonation)) {

    $('donationerror').innerHTML = 'Amount must be numeric'

    isValid = false

  }


  return isValid

}


var addpatron = function () {

  var isValid = validateItems() // do call this


  if (isValid == true) {

    $('myform').submit()

  } else {

    $('endmessage').innerHTML = 'Patron Not Added!'

  }

}


查看完整回答
反對 回復 2021-11-04
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

此外,您的 CSS 選擇器是錯誤的。我認為您的意圖是查找具有屬性id="firstname"、id="firstnameerror"等的html 元素。在 CSS 選擇器中,#意味著按 id 查找元素,因此您確實想要$('#firstname')等。

而且看起來你不懂jquery。Jquery 對象與https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API中記錄的原始 DOM 元素不同。原始 DOM 元素是瀏覽器腳本中可用的最低級別的 DOM 接口。Jquery 是一個建立在它之上的庫。一個 jquery 對象代表一個 DOM 元素(或者多個元素,或者根本沒有)。但是 jquery 對象上可用的方法與原始 DOM 元素上可用的方法完全不同,您似乎正在嘗試使用它們。請注意,由于 jquery 對象根本不能表示任何對象,因此當遇到 CSS 選擇器無法匹配 DOM 中的任何元素時,jquery 不會拋出異常。

有不同的方法來解決這個問題。您可以完全接受 jquery,使用 jquery 中可用的所有方法,而不是您所學的方法。例如,$('validateItems').onclick = addPatron會變成$('validateItems').click(addPatron). 有關更多詳細信息,請參閱 jquery.com。或者你可以使用原始 DOM 的東西。

您也可以混合使用這兩種方法,只要您不要混淆這兩種方法即可。例如,我相信 jquery 對象可以像原始 DOM 元素的數組一樣被取消引用,$('#firstname')[0]即將是第一個(也是唯一一個)具有 id 的 DOM 元素firstname。這意味著您可以像對待任何 DOM 元素一樣對待它;例如,var firstName = $('#firstname')[0].value。(雖然很煩人,但我在文檔中找不到它。)相反,如果element是原始 DOM 元素,則$(element)是包含該元素(沒有其他元素)的 jquery 對象。

使用原始 DOM 元素很笨拙。方法名稱很長,并且存在不同瀏覽器之間不一致的問題(雖然我懷疑這不像以前那么糟糕)。Jquery 在我看來更好。但是 jquery 現在也相當過時了。更現代的東西使用諸如 React 之類的庫,它使用不同的范式,旨在避免諸如忘記更新頁面部分之類的問題。


查看完整回答
反對 回復 2021-11-04
  • 2 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號