簡體   English   中英

如何在Javascript中的另一個函數中返回一個帶有參數的函數

[英]How to get return of one function with parameter in other function in Javascript

我是 JavaScript 的新手,有點卡在這個地方

function onView(data){
    var item_size = data;
    return item_size;
}

我有這個函數,參數通過 HTML 輸入傳遞,我想在另一個函數中使用這個函數的返回

function onRegisterInput(){
    var y= onView(data);
}

onRegisterInput 被稱為 onclick 按鈕,我想將 onView 函數的返回值作為 var y。 我怎樣才能做到這一點 ?? 每次我單擊按鈕 onRegisterInput() 函數都會被調用,但我的調試器顯示數據未定義。 請幫忙。 提前致謝。

正如您在onView中看到的,它將數據作為函數參數,但是您沒有在調用var y= onView();給它任何參數var y= onView(); . 根據我的理解,當單擊按鈕時會觸發 onView get,因此我建議您將值保存在全局變量中,以便您可以跨函數使用它

有兩種方法可以讓您在按鈕單擊回調中獲取data

  1. 從 DOM 獲取數據

有多種方法可以將數據保存在 DOM 中,但data-*屬性很流行:

 function testMe(event, button) { const magicNumber = button.getAttribute('data-magic-number'); document.getElementById('result1').innerHTML = magicNumber; } function testMe2(event, button) { const magicNumber = document.getElementById('magic2').getAttribute('data-magic-number'); document.getElementById('result2').innerHTML = magicNumber; }
 .test { padding: 4px; }
 <div class="test"> <button id="button1" data-magic-number="123456789" onclick="testMe(event, this)">Button 123456789</button> <div id="result1"></div> </div> <div class="test"> <span data-magic-number="987654321" id="magic2">Click this: </span><button id="button2" onclick="testMe2()">Button 987654321</button> <div id="result2"></div> </div>

  1. 另一種選擇是將數據保存在 JS 中

 let myMagicNumber = 1; let resultDiv = document.getElementById('result'); function showNumber() { resultDiv.innerText = myMagicNumber; } function incNumber() { myMagicNumber++; showNumber(); } function decNumber() { myMagicNumber--; showNumber(); }
 <div> <button onclick="showNumber()">Show</button> <button onclick="incNumber()">+1</button> <button onclick="decNumber()">-1</button> </div> <div id="result"> </div>

  1. 讓我們回到你的例子

 function onView(data) { // Some data processing // We will return data length for example return (typeof data === 'string' ? data.length : 0); } function onRegisterInput() { // Button click let data = document.getElementById('name').value; if (data != '') { var y = onView(data); document.getElementById('result').innerText = 'Name: ' + data + ', length: ' + y; } else { document.getElementById('result').innerText = 'Enter your name'; } }
 <div> <label>Name: <input type="text" id="name"/></label> <button onclick="onRegisterInput()">Register</button> </div> <div id="result"></div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM