2013-02-15 57 views
1

我想在javascript中构建一个ROMI(营销投资计算器的回报),如果有人能告诉我我做错了什么,我将不胜感激。我试图从表单中取值,将其传递给“leadGeneration”,然后使用下面的公式操作它,然后在文本框中显示输出“msRomi”。我想添加一个免责声明,我不是网络开发人员,我是营销分析师,所以我对任何无偿错误或新手错误表示歉意。我环顾四周,根据本网站和几个教程网站的资源,此代码应该是有效的(它不会发生),请告诉我我做错了什么和/或如何解决它?Javascript数学检查

var leadGeneration = $("leadGeneration"); 
var conversionTools = $("conversionTools"); 
var brandRecognition = $("brandRecognition"); 
var loyalityBuilding = $("loyalityBuilding"); 
var marketingSpending = $("marketingSpending"); 


var deltaLg = 375; 
var deltaCt = 75; 
var deltaBr = 93.75; 
var deltaLb = 56.25; 
var totalPms = 100000; 

var msPercent = parseFloat(marketingSpending)/parseFloat(totalPms); 

var lgromi= (((msPercent * (leadGeneration)) * parseFloat(deltaLg) * (2280)/((parseFloat(msPercent) * (parseFloat(leadGeneration))) 
var ctRomi= ((msPercent) * (conversionTools)) * parseFloat(deltaCt) * (2280)/((parseFloat(msPercent) * (parseFloat(leadGeneration))) 
var brRomi= ((msPercent) * (brandRecognition)) * parseFloat(deltaBr) * (2280)/((parseFloat(msPercent) * (parseFloat(leadGeneration))) 
var lbRomi= ((msPercent) * (loyalityBuilding)) * parseFloat(deltaLb) * (2280)/((parseFloat(msPercent) * (parseFloat(leadGeneration))) 

var msRomi= parseFloat(lgRomi) + parseFloat(ctRomi) + parseFloat(brRomi) + parseFloat(lbRomi) 

HTML

<div class="marketingSpending" style="align: center">Marketing Spending:</div> 
<input type="range" name="marketingSpending" min="5000" max="100000" step="1000" style="width: 70px"> 
</div> 


<div class="inputForm" id="calcValues" style="align: right"> 
<form id="romiForm"> 

<div class="percentName" style="align: left">Lead Generation:</div> 
<form action="" class="percentSelection"> 
<select name="leadGeneration" id="leadGeneration"> 
<option value="10" selected>10%</option> 
<option value="20">20%</option> 
<option value="30">30%</option> 
<option value="40">40%</option> 
<option value="50">50%</option> 
<option value="60">60%</option> 
<option value="70">70%</option> 
<option value="80">80%</option> 
<option value="90">90%</option> 
<option value="100">100%</option> 
</select> 
</form> 

<div class="percentName" style="align: right">Conversion Tools:</div> 
<form action="" class="percentSelection"> 
<select name="conversionTools" id="conversionTools"> 
<option value="10" selected>10%</option> 
<option value="20">20%</option> 
<option value="30">30%</option> 
<option value="40">40%</option> 
<option value="50">50%</option> 
<option value="60">60%</option> 
<option value="70">70%</option> 
<option value="80">80%</option> 
<option value="90">90%</option> 
<option value="100">100%</option> 
</select> 
</form> 

<div class="percentName">Brand Recognition:</div> 
<form action="" class="percentSelection"> 
<select name="brandRecognition" id="brandRecognition"> 
<option value="10" selected>10%</option> 
<option value="20">20%</option> 
<option value="30">30%</option> 
<option value="40">40%</option> 
<option value="50">50%</option> 
<option value="60">60%</option> 
<option value="70">70%</option> 
<option value="80">80%</option> 
<option value="90">90%</option> 
<option value="100">100%</option> 
</select> 
</form> 

<div class="percentName">Customer Loyalty:</div> 
<form action="" class="percentSelection"> 
<select name="customerLoyalty" id="customerLoyalty"> 
<option value="10" selected>10%</option> 
<option value="20">20%</option> 
<option value="30">30%</option> 
<option value="40">40%</option> 
<option value="50">50%</option> 
<option value="60">60%</option> 
<option value="70">70%</option> 
<option value="80">80%</option> 
<option value="90">90%</option> 
<option value="100">100%</option> 
</select> 
</form> 


</form> 
</div> 
+1

我们可以看到html吗? – BostonJohn 2013-02-15 22:06:12

+2

实际问题是什么? – j08691 2013-02-15 22:06:30

+5

'$(“leadGeneration”)'和其他不是数值,但jQuery对象(除非'$'不是jQuery,而是自定义函数?)。你必须用'.val()'(如果是表单输入)或'.html()'(如果其他html元素)从它中提取值。 – bfavaretto 2013-02-15 22:07:05

回答

5

你的元件必须由id或通过class来选择。我不知道它需要是不看你的HTML,但我会猜id

var leadGeneration = $("#leadGeneration"); ... 

通知的#表示元素的id属性。另外,@ bfavaretto的评论是正确的,我们创建的这些jQuery对象包含的内容远远多于其内容的价值,所以我们不能对它们进行定期的数学运算。提取这些对象的值的一个例子是这样的:

var leadGenerationVal = leadGeneration.val() 

或者,我们可以在同一行中提取值,因为我们创造了jQuery对象,如果你不想做任何事情都要与对象在页面上:

var leadGeneration = $("#leadGeneration").val(); 

以上面的代码行为例,您应该能够让脚本的其余部分工作。

+0

所以我会使用var leadGeneration = $(“#leadGeneration”)。val();初始化变量leadGeneration然后我会在我的数学公式中使用leadGeneration?即leadGeneration * msPercent会给我的产品?和JavaScript了解括号?有关从HTML表单传递值的问题,我只需要将表单分配给id,然后将该id传递给Javascript? – Eponymic 2013-02-15 23:10:11

+0

我不知道你的意思是理解括号,但是,如果你将leadGeneration声明为'$(“#leadGeneration”)。val()',那么你可以用它来执行数学运算。表单id无关紧要,它是jQuery正在访问的'select'元素的id。 – 2013-02-16 06:26:40