2014-04-24 2 views
0

Я пытаюсь отобразить из svg, слоев в соответствии с числами, заданными с интервалом. У меня есть 2 случайных числа (слева и справа), которые отображаются для отображения из интервала (10,99) both.That работает хорошо, но мне нужно отобразить слой 1 (банан1) из svg, если он оставлен || справа принадлежит интервалу (10,20), то если слева || right принадлежит интервалу (20,30) для отображения слоя 2 (банан2) из ​​svg и т. д. до левого || right принадлежит интервалу (90,99) для отображения слоя 9 (банан 9). Существует 9 интервалов и 9 слоев из svg для отображения. Код я написал, как выглядит:Отображать изображения в соответствии с номером, установленным с интервала

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 номера, где я отображения позже случайных чисел набор из интервалов и 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(), который имеет состояние для отображения layer1 (banane1 по идентификатору от SVG), если случайное число из интервала (10,20) .Unfortunately это не работает ... и я должен иметь больше 8 условие для отображения слоев из SVG, если случайные числа из разных интервала

+1

Пожалуйста, исправьте свое форматирование и опечатки в своем коде. Вопрос вам уже трудно выполнить, не пропуская '}' в 'getBanane'. Если бы вы могли поместить свой код в скрипку, это тоже могло бы помочь. –

+0

уверен, через минуту я собираюсь добавить скрипку – user3459377

ответ

0

Это не будет работать:

if(left || right == randomIntFromInterval(10,20)){ 

Что вы здесь делаете: OR ing left с right, который даст вам логическое значение, которое вы тогда сравниваете с randomIntFromInterval. Я думаю, что вы пытаетесь сделать, это:

var interval = randomIntFromInterval(10,20); 
if (left == interval || right == interval) { 

EDIT: Хорошо вы изменили свой вопрос. Так что теперь это:

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

Не верно, вы не можете писать if заявление, как, что в JavaScript, или в большинстве (вероятно все) языков программирования. Вы не можете сказать «если a или b больше x», как в обычной английской речи, потому что это неоднозначно. Вы должны явно сказать «если (a больше x) или (b больше x)». Таким образом, ваш if выше утверждение должно стать:

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

Хотя я не уверен, что это именно то, что вы хотите либо. Потому что здесь, если left==0 и right==41, то это утверждение будет истинным. Я думаю, что вы хотите, чтобы либо слева, либо справа, чтобы быть в промежутке, поэтому ваша лучшая проверка будет такой:

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

Yeap, этот взгляд намного лучше, это именно то, что мне нужно ... но как создать условие, которое включает в себя все интервалы (10,20), (20,30), (30,40) .... (90,99) – user3459377

+0

Черт ...var interval становится случайным теперь из интервала set :(Мне нужно проверить, принадлежит ли левое или правое к этому интервалу (10,20), так что если мой левый или правый 12 вернет true, если слева или справа 21, чтобы вернуть false – user3459377

Смежные вопросы