我可以给Javascript变量分配一个属性(或某种等价物)吗?包括示例代码

我可以给Javascript变量分配一个属性(或某种等价物)吗?包括示例代码,javascript,jquery,variables,Javascript,Jquery,Variables,(前言:我的代码正在运行JQuery) 我有以下代码,它减少了一部分,然后显示结果: 这是简化分数的函数: function reduce(numerator,denominator){ var gcd = function gcd(a,b){ return b ? gcd(b, a%b) : a; }; gcd = gcd(numerator,denominator); if ((denominator/gcd) == 1) { return [numerator/

(前言:我的代码正在运行JQuery)

我有以下代码,它减少了一部分,然后显示结果:

这是简化分数的函数:

function reduce(numerator,denominator){
  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 {return [numerator/gcd +"|"+ denominator/gcd];
  }
}
当HTML正文中的跨度具有类
reducedfraction
时,将显示结果(在本例中为
1 | 3
):

var reducedfraction = reduce(4,12);
$('.reducedfraction').html(reducedfraction );
以上所有功能都很好。
以下是我试图进行的修改:

如果分数不能减少(换句话说gcd==1),则类为
SimplificationPrompt
的父跨度将消失

我不相信您可以向变量添加属性,但我还是徒劳了,因为我不知道还能做什么。以下是我尝试过的:

function reduce(numerator,denominator){
  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 {
return [numerator/gcd +"|"+ denominator/gcd];
if ((gcd == 1)){
     $(this).attr({  // THE IDEA HERE IS THAT A GCD OF 1 WOULD FLAG THIS IN SOME WAY (I JUST RANDOMLY CHOSE TITLE)
                "title" : "HideSimplificationPrompt"
            });
    }
      }
    }

$(document).ready(function () { //AND THEN THIS FUNCTION WOULD HIDE THE SPECIFIED PARENT SPAN 
$("[title=HideSimplificationPrompt]").parent(".SimplificationPrompt).hide();
});

这里的新手,试图通过这样的实验来学习。任何帮助都将不胜感激。谢谢

首先,返回语句后不能完成任何逻辑。所以你在
之后的整个条件返回[分子/gcd+“|”+分母/gcd]没有意义。您必须在
返回之前完成span标记的“隐藏”或“显示”

第二,如果我理解您正试图正确地执行的操作,为什么您不有条件地
hide()
span iff。gcf是否为1

最后,您返回结果的方式与我所见过的任何方式都不一样。不确定你是否这么做是有原因的……但是考虑修改。 编辑 我承认我在理解你的意图时遇到了一些困难,所以我将放弃回答这个问题。但我会添加一个小金块,它可能会在将来对你有所帮助

如果您试图以特定元素为目标并且您可以访问html,那么给该元素一个
id
几乎总是有意义的<代码>id根据惯例是唯一的,所以没有理由尝试以父母为目标…或任何其他东西。通过以一种最容易实现的方式构建html,准确定位您需要的内容。你是开发者,你是司机。不要让你的工作变得比需要的更困难


其次为了获得更高质量的答案,你应该更彻底地组织你的问题。包括完整的示例,这样人们就可以实际执行您的代码,或者接近能够复制您的场景的位置。无论如何,我希望你尽快找到解决办法。继续编码!它变得更容易/更难了,哈哈。

不要把输出代码和计算代码混在一起。使用

function reduce(numerator, denominator) {
  function gcd(a,b) {
    return b ? gcd(b, a%b) : a;
  }
  var divisor = gcd(numerator, denominator);
  return {
    numerator: numerator/divisor,
    denominator: denominator/divisor,
    isSimplified: divisor == 1
  };
}

你可以称之为

var reducedfraction = reduce(4,12);
display($('.reducedfraction'), reducedfraction);

如果
reducedfraction.isImplified
display
函数中的正确位置为true,则可以很容易地将更改元素标题属性的代码放入该函数。

为什么在数组文本中返回字符串?!返回一个包含分子和分母的正确数组,然后在函数外部进行格式化(通过竖线连接)。不要在函数内部进行格式化。只需在函数外部检查结果是否与输入相同。我正在处理返回[分子/gcd+“|”+分母/gcd]
@Bergi感谢您的反馈;稍后我将不得不对此进行研究,但这似乎不是问题所在,因为屏幕顶部的代码运行良好。这更好地说明了我的问题:或
$('.span to hide').toggle(gcd==1):)这些似乎是很好的建议,但我如何将此目标设定为特定的父跨度。比如说,
reducedfraction
产生了一个简化的分数,但是
reducedfraction2
没有。在本例中,我希望隐藏此
,但不是
类似于
$(this).parent(.SimplificationPrompt').hide();
工作,而不是
$('.SimplificationPrompt').hide()
?@MikeMcCaughan是的,我只是觉得OP是编程新手,想给出一个非JS特定的解决方案。但是,是的,你的解决方案更性感,哈哈。@ElroyJetson我试过了,但似乎不管用:@MikeMcCaughan这似乎是个好建议,但它似乎不会针对父跨度。它会隐藏所有跨度。不是他的JSFIDLE更好地说明了我的意思:如果我遗漏了什么,请原谅——我真的很感谢你写出来——但我不知道这与隐藏和显示父span函数有什么关系。我不想隐藏
当然,只要在
显示
函数中使用
元素.parent(.SimplificationPrompt”)
function display(element, {numerator, denominator}) {
  var out = numerator + "|" + denominator;
  if (denominator == 1) {
    out = String(numerator);
  }
  element.html(out);
}
var reducedfraction = reduce(4,12);
display($('.reducedfraction'), reducedfraction);