调用另一个函数内部的函数

时间:2017-04-25 17:13:12

标签: javascript html function

我在功能中调用功能时遇到问题。

这是示例代码:

Get_K_Shell_Te

saveInfo()方法是在一个按钮中完成的:

import numpy as np
# this computes various quantities related to the shell in a object oriented way
class Shell_Data:
    def __init__(self, data):
         self.data = data

    def Get_mask(self):
          zbar=self.data['z2a1']
          y=self.data['y']*1000 
          mask= np.logical_and(zbar >= 16  ,zbar<= 19  )
          return self.mask

    def Get_Shell_Te(self):
          self.mask =self.Get_mask()
          te   =self.data['te'][self.mask]
          ro   =self.data['ro'][self.mask]
          rvol =self.data['rvol'][self.mask]
          self.Shell_Te=np.sum(te*ro/rvol)/(np.sum(ro/rvol))
          print "Shell Temperature= %0.3f eV"  % (self.Shell_Te)
          return  self.Shell_Te

     def Get_Shell_ro(self):
          mask =self.Get_mask()
          te   =self.data['te'][mask]
          ro   =self.data['ro'][mask]
          rvol =self.data['rvol'][mask]
          radk =self.data['radk'][mask]
          self.Shell_ro=np.sum(radk*ro/rvol)/np.sum(radk/rvol)
          return self.Shell_ro

因此,有2个表单,您填写您的电子邮件和姓名。通过单击“保存”按钮,DIV将消失(这有效),另一个DIV将出现在文本中,如下所示:Name =(name)|电子邮件=(电子邮件)。

我遇到问题,为相应的行调用saveInfo()的returnEmail()(其中有'Name =')。

我试着像这样写:

<script>
    function saveInfo() {
        function returnEmail() {
            var _e = document.getElementById("email").value;
            return _e;
        }

        function returnName() {
            var _n = document.getElementById("name").value;
            return _n;
        }
    }
</script>

我知道上面的脚本不正确,这不是我试图返回它的唯一方法。

3 个答案:

答案 0 :(得分:4)

看起来你正试图将这些函数返回以后使用。尝试这样做。此函数现在返回一个具有两个函数的对象。

function saveInfo() {
    return {
        returnEmail: function() {
            var _e = document.getElementById("email").value;
            return _e;
        },

        returnName: function() {
            var _n = document.getElementById("name").value;
            return _n;
        }
    }
}

以前,您的saveInfo函数未返回任何内容,因此

saveInfo().returnEmail();

将评估为

undefined.returnEmail();

你会收到错误

答案 1 :(得分:2)

您需要从函数saveInfo返回公开的函数。此时,您的代码仅声明该函数,但不返回任何内容。因此,saveInfo会返回undefined。以下方法是显示模块模式的实现,以显示您的函数之外的公共成员。

function saveInfo() {
        var returnEmail = function () {
            var _e = document.getElementById("email").value;
            return _e;
        }

        var returnName= function () {
            var _n = document.getElementById("name").value;
            return _n;
        }

        return {
           returnEmail :returnEmail,
           returnName :returnName
        }
    }

答案 2 :(得分:1)

如果您将其设置为saveInfo().returnEmail();,则可以执行以下操作。 saveInfo返回一个包含returnEmail方法的对象。

<script>
    function saveInfo() {
        // Do any desired logic
        return {
            returnEmail: function() {
                var _e = document.getElementById("email").value;
                return _e;
            },

            returnName: function() {
                var _n = document.getElementById("name").value;
                return _n;
            }
        }
    }
</script>