2012-10-30 202 views
0

使用Firebug我有一個TypeError - 切片不是函數。我認爲這是因爲我試圖在一個數字上使用切片,但我認爲它會是一個字符串。javascript字符串中的特殊字符

有問題的字符串是"****01814c6538032b****",這通過ajax命令進入頁面,但在我剛剛聲明它的時候進行測試。

hexString = "****01814c6538032b****" 

....現在到我的問題了!有沒有辦法顯式聲明這是一個字符串?我可以使用toString來改變它,但是想知道我是否可以首先將它指定爲一個字符串,並確保它將保持一個。

**編輯** 這裏是所有的javascript代碼,我的代碼從hexString =開始。

<script type="text/javascript"> 

<!-- 
// Parses the xmlResponse from status.xml and updates the status box 
function updateStatus(xmlData) { 
    var mainstat = document.getElementById('display').style.display; 
    var loadstat = document.getElementById('loading').style.display; 

    // Check if a timeout occurred 
    if(!xmlData) 
    { 
     mainstat = 'none'; 
     loadstat = 'inline';  

     return; 
    } 

    // Make sure we're displaying the status display 
    mainstat = 'inline'; 
    loadstat = 'none'; 

    // Loop over all the LEDs 
    for(i = 0; i < 5; i++) 
     document.getElementById('led' + i).style.color = (getXMLValue(xmlData, 'led' + i) == '1') ? '#ff8b00' : '#777'; 

    // Loop over all the buttons 
    for(i = 0; i < 5; i++) 
     document.getElementById('btn' + i).innerHTML = (getXMLValue(xmlData, 'btn' + i) == 'up') ? '&Lambda;' : 'V'; 

    // Update the POT value 
    for(i = 0; i < 2; i++) 
     document.getElementById('pot'+i).innerHTML = getXMLValue(xmlData, 'pot'+i); 

    // Update for bargraph 
    for(i = 1; i < 3; i++) 
    { 
     var wd=0; 
     wd= (getXMLValue(xmlData, 'pot'+(i-1)))/5; 
     document.getElementById('bar'+i).style.width=wd+"px"; 
    } 


    // Update string value 
    document.getElementById('test').innerHTML = 
    getXMLValue(xmlData, 'test'); 




var hexString="****01814c6538032b****"; 

s1 = hexString.slice(0,4); 
document.getElementById("slice1").innerHTML=s1; 
s2 = hexString.slice(4,6); 
document.getElementById("slice2").innerHTML=h2d(s2); 
s3 = hexString.slice(6,10); 
document.getElementById("slice3").innerHTML=h2d(s3); 
s4 = hexString.slice(10,14); 
document.getElementById("slice4").innerHTML=h2d(s4); 
s5 = hexString.slice(14,18); 
document.getElementById("slice5").innerHTML=h2d(s5); 
s6 = hexString.slice(18,22); 
document.getElementById("slice6").innerHTML=s6; 

tempString = h2d(s2); 
sensorNo = parseInt(tempString); 

tempString = h2d(s3); 
humVal = parseInt(tempString); 

    HumidityTemp=(125/65536)*humVal; 
    HumidityTemp=HumidityTemp-6; 

document.getElementById("slice3").innerHTML=HumidityTemp.toString(); 


tempString = h2d(s4); 
tempVal = parseInt(tempString); 

    TemperatureTemp=(175.72/65536)*tempVal; 
    TemperatureTemp=TemperatureTemp-46.85; 

    document.getElementById("slice4").innerHTML=TemperatureTemp.toString(); 

tempString = h2d(s5) ; 
voltVal = parseInt(tempString); 

    VoltageTemp = 2095/voltVal; 

    document.getElementById("slice5").innerHTML=VoltageTemp.toString(); 



} 
setTimeout("newAJAXCommand('status.xml', updateStatus, true)",500); 


function h2d(h) 
{ 
return parseInt(h,16); 

} 



</script> 
+2

你怎麼使用'切片'? – Blender

+1

XHR上的任何內容都應該以字符串的形式出現,除非您將其類型明確地設置爲其他類型,例如'arraybuffer'。 – alex

+0

這是我如何使用它:var hexString =「**** 01814c6538032b ****」; s1 = hexString.slice(0,4); document.getElementById(「slice1」)。innerHTML = s1; –

回答

0

您只需通過添加一個空字符串給它,像這樣將數字轉換成字符串:

var str = 1+""; // === "1" 

此外,this可能有關。