2012-01-05 8 views
0

我拉我的头发试图找到一个解决这个问题..按照Dreamweaver,当我运行它,JavaScript认为“/”之间的部分是一个正则表达式的定义。我如何解决这个问题就像我想要的那样划分?如何让Javascript中的除法运算符工作?它认为这是一个正则表达式

var totalPrice = 0; 
    totalPrice = totalPrice + ((bluRayPrice * filmHours()) + ((filmHours()/3 < 1) ? bluRayPrice * copies1 : ((filmHours()/3)*bluRayPrice) * copies1)); 
+0

你的代码与RegEx有什么关系? – 2012-01-05 22:36:52

+0

在这里完美的作品:http://jsfiddle.net/Y7UDY/我认为你的问题是'根据Dreamweaver'。 – 2012-01-05 22:38:29

+0

没什么,这就是问题的全部。 – Chris 2012-01-05 22:39:27

回答

3

Dreamweaver是只是一个IDE。您应该忽略任何不正确的突出显示,因为JavaScript将按预期运行,并在实际使用时进行分割。

这样的猜测,虽然,你应该把像

filmHours()/ 3

+0

尝试了一个空格,Dreamweaver仍然对它进行了错误的颜色编码,但它看起来像在浏览器中正常运行,我只是认为这不是因为我没有意识到我的公式错误。感谢Alan的帮助 – bruchowski 2012-01-05 22:44:19

1

您的代码工作完全正常它之间的空间:

var totalPrice = 0, bluRayPrice = 10, copies1 = 10; 

function filmHours(){ 
return 3; 
} 

totalPrice = totalPrice + ((bluRayPrice * filmHours()) + ((filmHours()/3 < 1) ? bluRayPrice * copies1 : ((filmHours()/3)*bluRayPrice) * copies1)); 

/*totalPrice = 0 + ((10 * 3) + ((3/3 < 1) ? 10 * 10 : ((3/3)*10) * 10)); */ 

alert(totalPrice); // 130 

我也需要指出的是,我在Dreamweaver上看到了许多突出显示的错误。我强烈建议你使用Notepad++,一旦你使用它,你永远不会想回到Dreamweaver。

1

像其他人一样,这应该运行良好。只是,虽然清理了一点:

var film_hours = filmHours(); 
var totalPrice = 0 + ((bluRayPrice * film_hours) + (((film_hours/3) < 1) ? (bluRayPrice * copies1) : ((film_hours1/3) * bluRayPrice) * copies1)); 

我所做的一切在这里被干掉他们totalPride初始设置为零,因为它是不必要的(在这种情况下,至少),并缩短功能运行到一个变量 - 这样你就可以处理更少的括号和头痛。

0

我遇到同样的问题,并没有发现不是写

filmHours()/3 

filmHours()*(Math.pow(3,-1)) 

这样的颜色编码是确定的其他任何解决方案。

相关问题