我可以给Javascript变量分配一个属性(或某种等价物)吗?包括示例代码
(前言:我的代码正在运行JQuery) 我有以下代码,它减少了一部分,然后显示结果: 这是简化分数的函数:我可以给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/
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);