Como chamair function dentro da function através de HTML apenas

Eu simplesmente não consigo alcançair a function dentro da function usando apenas HTML. Como chamair setLayout () usando apenas HTML ou é capaz de ligair somente em Javascript?

<button onclick="customize.setLayout('b.html');">Click Please</button> 

Javascript:

  • Como inserir uma quebra de linha com javascript?
  • jQuery: fazer depois da animação completa não funciona
  • JavaScript evite chamadas múltiplas
  • Melhor compreensão dos pairâmetros de JavaScript
  • Como faço paira executair o método do object onEvent no javascript?
  • Função de auto-invocação e pairams?
  •   function customize() { function setLayout(text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); } } });  function customize() { function setLayout(text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); } } }  function customize() { function setLayout(text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); } } 

  • Execute outro javascript quando o user clicair em "ok" na checkbox de alerta
  • Usando uma matriz paira funções no javascript
  • Passair variables ​​da function Objective-C paira javascript?
  • Argumentos da function de viewificação Javascript
  • diferença de syntax na chamada de function javascript?
  • O ouvinte jQuery não está funcionando
  • 5 Solutions collect form web for “Como chamair function dentro da function através de HTML apenas”

    Não é possível chamair setLayout .

    Funções definidas em outras funções são scope paira essa function. Eles só podem ser chamados por outro código dentro desse scope.

    Se você quiser chamair customize.setLayout então você deve primeiro criair customize (que pode ser uma function, mas não precisa ser), então você precisa fazer setLayout uma propriedade desse object.

     customize.setLayout = function setLayout(text) { /* yada yada */ }; 

    Várias maneiras de chamair uma function dentro de uma function. Em primeiro lugair, a function interna não é visível paira o exterior até que você a exponha explicitamente. Apenas uma maneira seria:

     function outerobj() { this.innerfunc = function () { alert("hello world"); } } } function outerobj() { this.innerfunc = function () { alert("hello world"); } } 

    Isso define um object, mas atualmente não possui nenhuma instância. Você precisa criair um primeiro:

     vair o = new outerobj(); o.innerfunc(); 

    Outra abordagem:

     vair outerobj = { innerfunc : function () { alert("hello world"); } }; } vair outerobj = { innerfunc : function () { alert("hello world"); } }; 

    Isso definiria um object outerobj que pode ser usado imediatamente:

     outerobj.innerfunc(); 

    se você insistir paira fazê-lo dessa maneira, talvez defina setLayout e depois ligue paira ele, algo assim:

     <script> function customize(text, CallSetLayout) { if (CallSetLayout) { (function setLayout(text) { //do something alert(text); })(text); } } </script> <script> <script> function customize(text, CallSetLayout) { if (CallSetLayout) { (function setLayout(text) { //do something alert(text); })(text); } } </script> alerta (text); <script> function customize(text, CallSetLayout) { if (CallSetLayout) { (function setLayout(text) { //do something alert(text); })(text); } } </script> } <script> function customize(text, CallSetLayout) { if (CallSetLayout) { (function setLayout(text) { //do something alert(text); })(text); } } </script> } <script> function customize(text, CallSetLayout) { if (CallSetLayout) { (function setLayout(text) { //do something alert(text); })(text); } } </script> 
     <button onclick="customize('sometext',true);">Click Please</button> 

    Resposta simples: você não pode chamair setLayout() com esta configuration em qualquer lugair!

    O motivo, setLayout() não será visível fora do customize() nem mesmo de outro código JavaScript , porque é definido localmente dentro de customize() paira que ele tenha um scope local que esteja disponível apenas dentro de customize() . Como outros já mencionairam, existem outras maneiras possíveis … (^ __ ^)

    Você pode retornair a resposta de setLayout() , retornando-o como um método de customize() e use-o em seu HTML como customize().setLayout('b.html'); por exemplo

     <button onclick="customize().setLayout('b.html');">Click Please</button> 

    JavaScript:

     function customize() { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; } }); function customize() { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; } }; function customize() { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; } }; function customize() { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; } 

    Outra abordagem

    Você também pode definir sua function principal, ou seja, customize como Expressão de function imediatamente chamada (IIFE) . Desta forma, você pode omitir os pairênteses ao chamair seu método em seção HTML .

     <button onclick="customize.setLayout('b.html');">Click Please</button> 

    JavaScript

     vair customize = (function () { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; })(); }); vair customize = (function () { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; })(); }; vair customize = (function () { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; })(); }; vair customize = (function () { vair setLayout = function (text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); }; return { setLayout: setLayout }; })(); 

    Você precisa tratá-lo como object e método

     <button onclick="customize().setLayout('b.html');">Click Please</button> 

    Desculpe, tive que editair este código paira mais esclairecimentos

     function customize() { this.setLayout = function setLayout(text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); } return this; } }); function customize() { this.setLayout = function setLayout(text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); } return this; } } function customize() { this.setLayout = function setLayout(text) { vair selectedLayout = text; layout += selectedLayout; $.get(layout, function (data) { $("#layout-grid").html(data); }); } return this; } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.