根据间隔设置的数量显示图像

时间:2014-04-24 13:39:35

标签: javascript jquery svg

我尝试从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的图层

1 个答案:

答案 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==0right==41,所以这个陈述是正确的。我想你想要在左边或右边进入间隔,所以你最好的检查是:

if ((left >= 30 && left <= 40) || (right >= 30 && right <= 40)) {