我遇到了问题而且我不知道我做错了什么。嗯,
我正在使用xml
解析php
文件。if condition
由于某种原因无效。
谈到这一行:if (( '<?php echo $item['temp'] ?>' >= "37.0 °C") ) {
我不知道为什么这条线不起作用。
<?php foreach ( $item_array as $item ) : ?>
var latlng = new google.maps.LatLng(parseFloat(<?php echo $item['glat']; ?>),
parseFloat(<?php echo $item['glon']; ?>));
if (( '<?php echo $item['temp'] ?>' >= "37.0 °C") ) {
alert('<?php echo $item['temp']; ?>');
var contentString = '<?php echo $item['title']; ?>' + ' , ' + '<?php echo $item['temp']; ?>' ;
var marker1 = createMarker1( contentString,latlng,hot );
}
var hot = 'weather_icons/hot.png';
function createMarker1( contentString,latlng,hot ) {
var marker1 = new google.maps.Marker({
position: latlng,
map: map,
icon: hot
});
google.maps.event.addListener( marker1, "click", function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({
content: contentString
});
infowindow.open(map, marker1);
});
return marker1;
}
<?php endforeach; ?>
xml文件的示例:
<rss version="2.0">
<channel>
<item>
<title>Salonika</title>
<temp>6.7 °C</temp>
<glat>40.422726139672626</glat>
<glon>22.93392777442932</glon>
</item>
</channel>
</rss>
答案 0 :(得分:2)
您正在比较字符串,而不是数字。 字符串 "6.7 °C"
大于字符串 "37.0 °C"
。当comparing strings时,JavaScript会对它们进行比较&#34; character&#34; by&#34; character&#34; (从技术上讲,它们不是字符,而是UTF-16中的代码单元,但这是技术细节)。角色"6"
大于角色"3"
,因此比较不必进一步查看;它知道以"6"
开头的字符串是&#34;大于&#34;以"3"
开头的字符串。
我建议修改PHP以输出数字而不是字符串。但是如果你想保留PHP,你可以在JavaScript中处理这个问题:
if ( parseFloat('<?php echo $item['temp'] ?>') >= 37 ) {
parseFloat
将字符串的开头解析为一个数字(它假设为10),停在第一个非数字字符(在本例中为空格)。请注意,我已经改变了它所比较的内容,并且摆脱了额外的()
(它们是无害的,但没有意义)。