我尝试从svg显示层,根据间隔设置的数字。我有两个随机数(左和右)设置为从间隔(10,99)显示。这很好,但是,我需要如果离开||,从svg显示第1层(banane1)右边属于间隔(10,20),如果离开||右边属于间隔(20,30),从svg显示第2层(banane2)等等,直到左边|| right属于interval(90,99)以显示第9层(banane9)。 svg有9个间隔和9个层来显示。我写的代码看起来像:
FIDDLE:http://jsfiddle.net/r68Bg/
for(var i = 0; i < 2; i++){
panouri = document.getElementById('panou' + i);
svgDoc = panouri.contentDocument;
}
其中panou0和panou1是2 svg,其中包含2个数字,其中i显示随后的间隔设置的随机数和9个不同内容的图层,必须根据随机数显示。
function randomIntFromInterval(min,max)
{
return Math.floor(Math.random()*(max-min+1)+min);
};
function conditions(){
left = randomIntFromInterval(10,99);
right = randomIntFromInterval(10,99);
for(var i = 0; i < 2; i++){
ecuations.push(left, right);
randoms = document.getElementById("panou" + i).contentDocument;
numere = randoms.getElementById("number");
numere.textContent = ecuations[i];
}
};
我从设定的间隔中添加到我的svg(panou0和panou1)randoms数字。
function setBananeState(state)
{
for(var i = 1; i < 10; i++){
svgItem = svgDoc.getElementById("banane" + i);
svgItem.setAttribute("display", "none");
svgItem = svgDoc.getElementById(state);
svgItem.setAttribute("display", "inline");
}
};
function getBanane(){
if(left || right >= 30 && left || right <= 40){
bananeState = "banane3";
setBananeState(bananeState);
}
};
这里我有来自svgs的所有图层,其中包含根据给定的随机数显示的香蕉和一个函数getBanane(),如果随机数来自间隔(10,20),它有条件显示layer1(来自svg的id为banane1) 。不幸的是,这不起作用...如果随机数来自不同的间隔,我必须有8个条件来显示来自svg的图层
答案 0 :(得分:0)
这不会起作用:
if(left || right == randomIntFromInterval(10,20)){
你在这里做的是OR
left
right
,它会给你一个布尔值,然后你将其与randomIntFromInterval
进行比较。我想你要做的是:
var interval = randomIntFromInterval(10,20);
if (left == interval || right == interval) {
编辑:好的,你改变了你的问题。现在这个:
if(left || right >= 30 && left || right <= 40){
不对,你不能在javascript或大多数(可能是所有)编程语言中编写if
语句。您不能说&#34;如果a或b大于x&#34;,就像在普通英语演讲中那样,因为它不明确。您必须明确说出&#34; if(a大于x)或(b大于x)&#34;。因此,上面的if
声明需要变为:
if ((left >= 30 || right >=30) && (left <= 40 || right <= 40)) {
虽然我不确定这正是你想要的。因为这里left==0
和right==41
,所以这个陈述是正确的。我想你想要在左边或右边进入间隔,所以你最好的检查是:
if ((left >= 30 && left <= 40) || (right >= 30 && right <= 40)) {