javascript - 当输入的 GCD 为 1 时尝试隐藏跨度(包括代码)

标签 javascript function variables

我有一个应该执行 2 项任务的函数:

1) 通过拉出 GCD 化简 2 个数字(此功能有效)

2) 如果数字无法简化,则隐藏跨度(不起作用)

我包含了下面的代码,但是这个 JsFiddle 最能说明我的意思:http://jsfiddle.net/vmfL5rzy/

JavaScript

$(document).ready(function () {

function reduce(numerator,denominator){
    $this = $(this);
  var gcd = function gcd(a,b){
    return b ? gcd(b, a%b) : a;
  };
  gcd = gcd(numerator,denominator);
  if ((denominator/gcd) == 1) {
  return [numerator/gcd];
  } else {
if(gcd === 1){
  $(this).parent(".SimplificationPrompt").hide(); //THIS IS THE PART THAT'S WRONG 
return [numerator/gcd +"|"+ denominator/gcd];
}else{
return [numerator/gcd +"|"+ denominator/gcd];
}

  }
}


var reducefraction = reduce(4,12); 
    $('.reducefraction').html(reducefraction );

var reducefraction2 = reduce(1,5);
    $('.reducefraction2').html(reducefraction2 );

    });

HTML

<b>This should be hidden</b>: <span class="SimplificationPrompt"><span class="reducefraction"></span></span>
<br>
This shouldn't be hidden: <span class="SimplificationPrompt"><span class="reducefraction2"></span></span>

最佳答案

您试图通过在函数内使用 $(this) 来获取元素,这是错误的

您需要做的是将 elem 作为参数发送给函数,然后使用它。

查看代码片段

$(document).ready(function() {

  function reduce(numerator, denominator, elem) {

    var gcd = function gcd(a, b) {
      return b ? gcd(b, a % b) : a;
    };
    gcd = gcd(numerator, denominator);
    if ((denominator / gcd) == 1) {
      return [numerator / gcd];
    } else {
      if (gcd === 1) {

        return [numerator / gcd + "|" + denominator / gcd];
      } else {
        elem.parent().hide();
        return [numerator / gcd + "|" + denominator / gcd];
      }

    }
  }


  var reducefraction = reduce(4, 12, $('.reducefraction'));
  $('.reducefraction').html(reducefraction);

  var reducefraction2 = reduce(1, 5, $('.reducefraction2'));
  $('.reducefraction2').html(reducefraction2);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<b>This should be hidden</b>: <span class="SimplificationPrompt"><span class="reducefraction"></span></span>
<br> This shouldn't be hidden: <span class="SimplificationPrompt"><span class="reducefraction2"></span></span>

关于javascript - 当输入的 GCD 为 1 时尝试隐藏跨度(包括代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544163/

相关文章:

javascript - 如果存在类,如何将值放入数组中

Javascript - 在迭代时操作多维数组中的值

javascript - 使用 React JS 和 Laravel 处理多张图片上传

大约 30 分钟后 PHP session 变量为空

objective-c - Objective c 检查文本字段是否为空

javascript - morris 图表 -> html 将变量传递给 php

php - 如何使 "PHPmailer"在函数中工作

function - 如何在 Elixir 中动态调用运算符

java - 带有自定义对象数组列表的 Java 中的变量范围问题

python - 如何为列表的每个元素分配不同的变量