ユーザ用ツール

サイト用ツール


プログラム言語:javascript_jquery:変数から動的に関数呼び出し

【jQuery】変数から動的に関数呼び出し

関数を動的に呼び出すには、オブジェクトのプロパティに関数を代入します。
以下は、変更した input 要素によって、実行する関数を切り替える例。

  1. <html>
  2. <meta>
  3. <meta charset="UTF-8">
  4. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
  5. </meta>
  6. <body>
  7. <form>
  8. <p>a <input type="number" name="a"></p>
  9. <p>b <input type="number" name="b"></p>
  10. <p>c <input type="number" name="c"></p>
  11. <p>d <input type="number" name="d"></p>
  12. </form>
  13. <p>a + b = <input type="text" name="ab" readonry></p>
  14. <p>b + c = <input type="text" name="bc" readonry></p>
  15. <p>c + d = <input type="text" name="cd" readonry></p>
  16. <p>a + d = <input type="text" name="ad" readonry></p>
  17. <script>
  18. $(function() {
  19. // オブジェクトのプロパティに関数を代入
  20. let funcObj = {
  21. // a の時に実行する関数
  22. a: function(inputData) {
  23. let ab = inputData['a'] + inputData['b']
  24. let ad = inputData['a'] + inputData['d']
  25. $('input[name=ab]').val(ab)
  26. $('input[name=ad]').val(ad)
  27. },
  28. // b の時に実行する関数
  29. b: function(inputData) {
  30. let ab = inputData['a'] + inputData['b']
  31. let bc = inputData['b'] + inputData['c']
  32. $('input[name=ab]').val(ab)
  33. $('input[name=bc]').val(bc)
  34. },
  35. // c の時に実行する関数
  36. c: function(inputData) {
  37. let bc = inputData['b'] + inputData['c']
  38. let cd = inputData['c'] + inputData['d']
  39. $('input[name=bc]').val(bc)
  40. $('input[name=cd]').val(cd)
  41. },
  42. // d の時に実行する関数
  43. d: function(inputData) {
  44. let cd = inputData['c'] + inputData['d']
  45. let ad = inputData['a'] + inputData['d']
  46. $('input[name=cd]').val(cd)
  47. $('input[name=ad]').val(ad)
  48. },
  49. }
  50.  
  51. $('input[type=number]').on('change', function(){
  52. let change_name = $(this).attr('name')
  53. let inputData = {}
  54. $('input[type=number]').each(function(i){
  55. let val = $(this).val()
  56. if (val == '') {
  57. val = 0
  58. }
  59. let name = $(this).attr('name')
  60. inputData[name] = val|0 // 数値に型変換
  61. })
  62.  
  63. // 変更した input 要素の name に対応した関数を実行する
  64. if (funcObj[change_name] != null) {
  65. funcObj[change_name](inputData)
  66. }
  67. })
  68. })
  69. </script>
  70. </body>
  71. </html>

コメント

コメントを入力. Wiki文法が有効です:
 
プログラム言語/javascript_jquery/変数から動的に関数呼び出し.txt · 最終更新: 2019/05/08 18:03 by yusuke_komori