2017-09-24 44 views
0

我遇到了在我的canvas上顯示數據的問題。我有多個if,else if聲明,我想要根據用戶輸入來評估哪些文本來顯示。當我的條件爲假時,畫布變空白

如果我創建了一個條件,其中一個if語句爲真,那麼應該顯示的文本就是這樣。但是,當我添加其他else if語句或單個if語句評估爲false時,canvas完全空白。示例如下:

if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("", 705, 175); 
} 

只有當它是評估的唯一條件並且條件評估爲true時,它纔有效。如果評估結果爲false,則會導致我的canvas變爲空白。

另外,如果我增加額外的else if語句來處理其他情況下我要進行評價的canvas始終保持空白....

if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("", 705, 175); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 705, 175); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 215); 
} 

這是否有些事情要與我如何使用empty聲明php還是我缺少別的東西?我在我的canvas的其他地方使用類似於此的代碼,並且按預期工作。

[編輯]

這裏有全套的javascript我使用,如果用戶輸入值來評估,或者如果他們是空白,然後顯示基於這些輸入什麼文本我想要的。

if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("", 705, 175); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 705, 175); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 215); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 215); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 235); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 760, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 195); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 215); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ3']);?>", 760, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ4']);?>", 760, 175); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 195); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 215); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ2']);?>", 760, 195); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 215); 
} 
else if((<?php echo !empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ1']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195); 
} 
else if(((<?php echo empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 650, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ3']);?>", 760, 195); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo !empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ3']);?>", 760, 175); 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("<?php echo ($row['civ4']);?>", 760, 195); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo empty($row['civ2']);?>) && 
(<?php echo !empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ3']);?>", 760, 175); 
} 
else if((<?php echo empty($row['civ1']);?>) && 
(<?php echo !empty($row['civ2']);?>) && 
(<?php echo empty($row['civ3']);?>) && 
(<?php echo empty($row['civ4']);?>)){ 

ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
ctx2.fillText("Civilian Goal: <?php echo ($row['civ2']);?>", 760, 175); 

}

+0

你沒有對待上下文的變化! –

+0

如果保持空白。如果出現錯誤,請查看開發工具控制檯。 –

+0

如果單獨一個評估爲false,那麼它肯定沒有繪製任何東西。因此,將是空白大聲笑(它的空字符串也仍然是「空白」)其餘的,你可以粘貼最終的JavaScript創建...也許PHP吐出錯誤,並毀了它。 – Epirocks

回答

1

此代碼是一個liitle有點...難看。這是一個解決方案,使其更好,並使用json以正確的方式處理上下文的變化。調試也更好。

var rowObj = <?=json_encode($row);?>; 
// the following settings are the same for all conditions: 
ctx2.font = "16px Arial"; 
ctx2.fillStyle = "green"; 
ctx2.textAlign = "left"; 
if(!rowObj.civ1 && !rowObj.civ2 && !rowObj.civ3 && !rowObj.civ4){ 
    ctx2.fillText("", 705, 175); 
} else if(rowObj.civ1 && !rowObj.civ2 && !rowObj.civ3 && !rowObj.civ4){ 
    ctx2.fillText("Civilian Goal: "+rowObj.civ1, 705, 175); 
} else if(rowObj.civ1 && rowObj.civ2 && rowObj.civ3 && !rowObj.civ4){ 
    ctx2.fillText("Civilian Goal: "+rowObj.civ1, 650, 175); 
    ctx2.fillText(rowObj.civ2, 760, 195); 
    ctx2.fillText(rowObj.civ3, 760, 215); 
} else { 
    alert('None of the conditions are met!'); 
} 
+0

謝謝...我試試這個。先前放棄了「可變」路線(不完全像您的路線),但仍然遇到了同樣的問題......我正在跟蹤您的語法,並會很快發送更新。 – airider74

+0

Joshua K ...這就像一個冠軍......必須修正你的代碼中的一個小錯誤,我們很好的第9行:更改+ row.civ1到+ rowObj.civ1 – airider74

+0

@ airider74固定。感謝您指出了這一點。 –

相關問題