如果javascript中的条件从xml获取数据不起作用

时间:2014-04-16 21:57:47

标签: javascript php xml rss

我遇到了问题而且我不知道我做错了什么。嗯,
我正在使用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>

1 个答案:

答案 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),停在第一个非数字字符(在本例中为空格)。请注意,我已经改变了它所比较的​​内容,并且摆脱了额外的()(它们是无害的,但没有意义)。