2014-01-29 42 views
-4

我的代码在asp classic中。我没有得到我出错的地方。你们能帮我解决吗?在asp classic中希望输出“14120000”为“1412 million”

<% 
response.write("Hi") 
response.end() 
    function nicenumber(n) 
     n = (replace(",","",n)) 

     if(!IsNumeric(n)) then 
     nicenumber = false 
     end if 
     if(n>1000000000000) then 
     nicenumber = round((n/1000000000000),2) & " trillion" 
     else if(n>1000000000) then 
     nicenumber = round((n/1000000000),2) & " billion" 
     else if(n>1000000) then 
     nicenumber = round((n/1000000),2) & " million" 
     else if(n>1000) then 
     nicenumber = round((n/1000),2) & " thousand" 
     end if 
     nicenumber = number_format(n) 

    End function 

response.write(nicenumber("14120000")) '14.12 million 

%> 

输入: - 14120000
输出要求: - 14120000 在ASP经典要的“14120000”输出“14120000”

+0

你的问题是什么? – epoch

+0

这是(应该是)jscript或VBScript? (“经典ASP”也可以使用)。因为vbscript不使用'return';你应该使用'nice_number = foo'而不是'return foo'。请参阅[这里](http://msdn.microsoft.com/en-us/library/x7hbf8fa(v = vs.84).aspx)。除此之外:你应该清楚地说明你的问题。你期望*发生了什么,发生了什么*实际上*等。 – RobIII

+0

@RobIII不管语言如何(VBscript或Javascript),函数中都有一个错误目录。 Javascript不包含'round'或'is_numeric'函数(如列出),它也缺少行结束符。 如果是vbscript,则函数语法是错误的(vbscript不使用花括号)。你也指出了'return'命令。 –

回答

1

我已经解释了大部分的错误inthecomments到你的问题;对于其余的。这是代码。请享用。 (使用1033(EN-US)locale

<% 
function NiceNumber(n) 
     n = replace(n, ",","") 

     if(not IsNumeric(n)) then 
      NiceNumber = false 
     elseif (n>=1e12) then 
      NiceNumber = FormatNumber((n/1e12),2) & " trillion" 
     elseif(n>=1e9) then 
      NiceNumber = FormatNumber((n/1e9),2) & " billion" 
     elseif(n>=1e6) then 
      NiceNumber = FormatNumber((n/1e6),2) & " million" 
     elseif(n>=1e3) then 
      NiceNumber = FormatNumber((n/1e3),2) & " thousand" 
     else 
      NiceNumber = FormatNumber(n) 
     end if 
End function 

SetLocale(1033) 'EN-US (1043 = NL-NL for example) 
x = "123456789" 
For i = 1 to len(x) 
    response.write(Left(x, i) & " &raquo; " & NiceNumber(Left(x, i))) & "<br>" 
Next 
%> 

输出:

1 » 1.00 
12 » 12.00 
123 » 123.00 
1234 » 1.23 thousand 
12345 » 12.35 thousand 
123456 » 123.46 thousand 
1234567 » 1.23 million 
12345678 » 12.35 million 
123456789 » 123.46 million 
1234567890 » 1.23 billion 
12345678901 » 12.35 billion 
123456789012 » 123.46 billion 
123456789» 1.23 trillion 
123456789» 12.35 trillion 
123456789» 123.46 trillion 
123456789» 1,234.57 trillion 
123456789» 12,345.68 trillion 
123456789» 123,456.79 trillion 
123456789» 1,234,567.89 trillion 

查找FormatNumber更多的格式选项。

+0

你需要再想一想你在开始时转换'n'的方式。如果'n'不是数字,你会得到一个错误。 – Paul

+0

感谢Roblll。 :) – user3156561

+0

谢谢你在所有的开发人员的名字,仍然更喜欢经典的asp有时:) –

0
<%@ language="vbscript" %> 
<% 



Set cd = CreateObject("ChartDirector.API") 


'Data for the chart as 3 random data series 

'response.Write("Hi") 
Set r = cd.RanSeries(127) 
response.Write("HI") 
data0 = r.getSeries(100, 100, -15, 15) 
data1 = r.getSeries(100, 150, -15, 15) 
data2 = r.getSeries(100, 200, -15, 15) 

timeStamps = r.getDateSeries(100, DateSerial(2011, 1, 1), 86400) 

' Create a XYChart object of size 640 x 400 pixels 
Set c = cd.XYChart(640, 400) 

' Add a title to the chart using 18 pts Times New Roman Bold Italic font 
Call c.addTitle("Product Line Global Revenue", "timesbi.ttf", 18) 

' Set the plotarea at (50, 55) with width 70 pixels less than chart width, and height 90 pixels less 
' than chart height. Use a vertical gradient from light blue (f0f6ff) to sky blue (a0c0ff) as 
' background. Set border to transparent and grid lines to white (ffffff). 
Call c.setPlotArea(50, 55, c.getWidth() - 70, c.getHeight() - 90, c.linearGradientColor(0, 55, 0, _ 
    c.getHeight() - 35, &Hf0f6ff, &Ha0c0ff), -1, cd.Transparent, &Hffffff, &Hffffff) 

' Add a legend box at (50, 25) using horizontal layout. Use 10pts Arial Bold as font. Set the 
' background and border color to Transparent. 
Call c.addLegend(50, 25, False, "arialbd.ttf", 10).setBackground(cd.Transparent) 

' Set axis label style to 8pts Arial Bold 
Call c.xAxis().setLabelStyle("arialbd.ttf", 8) 
Call c.yAxis().setLabelStyle("arialbd.ttf", 8) 

' Set the axis stem to transparent 
Call c.xAxis().setColors(cd.Transparent) 
Call c.yAxis().setColors(cd.Transparent) 

' Configure x-axis label format 
Call c.xAxis().setMultiFormat(cd.StartOfYearFilter(), "{value|mm/yyyy} ", cd.StartOfMonthFilter(), _ 
    "{value|mm}") 

' Add axis title using 10pts Arial Bold Italic font 
Call c.yAxis().setTitle("USD millions", "arialbi.ttf", 10) 

' Add a line layer to the chart using a line width of 2 pixels. 
Set layer = c.addLineLayer2() 
Call layer.setLineWidth(2) 

' Add 3 data series to the line layer 
Call layer.setXData(timeStamps) 
Call layer.addDataSet(data0, &Hff3333, "Alpha") 
Call layer.addDataSet(data1, &H008800, "Beta") 
Call layer.addDataSet(data2, &H3333cc, "Gamma") 

' Create the WebChartViewer object 
Set viewer = cd.WebChartViewer(Request, "chart1") 

' Output the chart 
chartQuery = c.makeSession(Session, viewer.Id) 

' Set the chart URL to the viewer 
viewer.ImageUrl = "getchart.asp?" & chartQuery 

' Output Javascript chart model to the browser to support tracking cursor 
viewer.ChartModel = c.getJsChartModel() 
%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <title>Track Line with Data Labels</title> 
    <script type="text/javascript" src="cdjcv.js"></script> 
</head> 
<body style="margin:5px 0px 0px 5px"> 
<script type="text/javascript"> 

// 
// Use the window load event to set up the MouseMovePlotArea event handler 
// 
JsChartViewer.addEventListener(window, 'load', function() { 
    var viewer = JsChartViewer.get('<%=viewer.Id%>'); 

    // Draw track cursor when mouse is moving over plotarea. Hide it when mouse leaves plot area. 
    viewer.attachHandler("MouseMovePlotArea", function(e) { 
     trackLineLabel(viewer, viewer.getPlotAreaMouseX()); 
     viewer.setAutoHide("all", "MouseOutPlotArea"); 
    }); 
}); 

// 
// Draw track line with data labels 
// 
function trackLineLabel(viewer, mouseX) 
{ 
    // Remove all previously drawn tracking object 
    viewer.hideObj("all"); 

    // The chart and its plot area 
    var c = viewer.getChart(); 
    var plotArea = c.getPlotArea(); 

    // Get the data x-value that is nearest to the mouse, and find its pixel coordinate. 
    var xValue = c.getNearestXValue(mouseX); 
    var xCoor = c.getXCoor(xValue); 

    // Draw a vertical track line at the x-position 
    viewer.drawVLine("trackLine", xCoor, plotArea.getTopY(), plotArea.getBottomY(), "black 1px dotted"); 

    // Draw a label on the x-axis to show the track line position 
    viewer.showTextBox("xAxisLabel", xCoor, plotArea.getBottomY() + 4, JsChartViewer.Top, 
     c.xAxis().getFormattedLabel(xValue, "mmm dd, yyyy"), 
     "font:bold 11px Arial;color:#FFFFFF;background-color:#000000;padding:0px 3px"); 

    // Iterate through all layers to draw the data labels 
    for (var i = 0; i < c.getLayerCount(); ++i) 
    { 
     var layer = c.getLayerByZ(i); 

     // The data array index of the x-value 
     var xIndex = layer.getXIndexOf(xValue); 

     // Iterate through all the data sets in the layer 
     for (var j = 0; j < layer.getDataSetCount(); ++j) 
     { 
      var dataSet = layer.getDataSetByZ(j); 

      // Get the color and position of the data label 
      var color = dataSet.getDataColor(); 
      var yCoor = c.getYCoor(dataSet.getPosition(xIndex), dataSet.getUseYAxis()); 

      // Draw a track dot with a label next to it for visible data points in the plot area 
      if ((yCoor != null) && (yCoor >= plotArea.getTopY()) && (yCoor <= plotArea.getBottomY()) && 
       (color != null)) 
      { 
       viewer.showTextBox("dataPoint" + i + "_" + j, xCoor, yCoor, JsChartViewer.Center, 
        viewer.htmlRect(7, 7, color)); 

       viewer.showTextBox("dataLabel" + i + "_" + j, xCoor + 5, yCoor, JsChartViewer.Left, 
        dataSet.getValue(xIndex).toPrecision(4), 
        "padding:0px 3px;font:bold 10px Arial;background-color:" + color + ";color:#FFFFFF"); 
      } 
     } 
    } 
} 

</script> 
<div style="font-size:18pt; font-family:verdana; font-weight:bold"> 
    Track Line with Data Labels 
</div> 
<hr style="border:solid 1px #000080" /> 
<div style="font-size:10pt; font-family:verdana; margin-bottom:1.5em"> 
    <a href="viewsource.asp?file=<%=Request("SCRIPT_NAME")%>">View Source Code</a> 
</div> 
<!-- ****** Here is the chart image ****** --> 
<%=viewer.renderHTML()%> 

</body> 
</html>