JavaScript 正在将字符串转换为字符串并导致错误
JavaScript is converting a String to a String and causing an error
我有一个带有一些嵌入式 JS 的 Delphi 应用程序。我有一个函数
function PlaceRecords(Lat, Lang, RecordNum, Dist, IconNo){
var latlng = new google.maps.LatLng(Lat,Lang);
PutMarker(IconNo, Lat, Lang, "Record " + RecordNum + " at " +Dist + " miles");
}
只要RecordNum中没有同一个字母。我将所有参数作为字符串传递,但出于某种原因,JS 想要将 RecordNum 转换为数字。我怎么能抑制这个。使用 IE 8.
嗯(根据你对我的评论的回复),如果你能看到你的代码正在生成 Javascript,它看起来像这样:
PlaceRecords(45.5262404, -122.6810841, A51210876, 123, 456);
现在你看到问题了吗?
您可能从一堆字符串开始,但您没有将它们用引号括起来,所以 Javascript 不认为它们是字符串。 51210876
之所以有效,是因为它是一个数字——即使您将它放在引号中,Javascript 也会对其进行几乎相同的处理。但与大多数语言一样(我已经将近 30 年没有编写 Pascal,但我确信它是一样的),A51210876
将被视为标识符名称而不是值,因为它以 alpha 开头字符.
假设你可以自由地将双引号放在单引号内,我建议你尝试这样的事情:
procedure TfrmMain.PlaceRecords(Lat,Lon,RecordNum, Dist:string; IconNo:integer);
begin
HTMLWindow2.execScript(Format(
'PlaceRecords(%s, %s, "%s", "%s", "%s")',
[Lat,Lon, RecordNum, Dist, IntToStr(IconNo)]),
'JavaScript'
);
end;
我知道 lats 和 longs 是数字,所以我没有将它们放在引号中。我不知道最后两个参数包含什么样的数据,所以我也把它们放在引号中。我想您可能会将它们全部放在引号中,因为任何 Javascript 行下期望数字 "should" 的行都确保该值实际上被视为数字。
注意在Javascript中,字符串可以用单引号或双引号括起来,在这种时候很方便。
我有一个带有一些嵌入式 JS 的 Delphi 应用程序。我有一个函数
function PlaceRecords(Lat, Lang, RecordNum, Dist, IconNo){
var latlng = new google.maps.LatLng(Lat,Lang);
PutMarker(IconNo, Lat, Lang, "Record " + RecordNum + " at " +Dist + " miles");
}
只要RecordNum中没有同一个字母。我将所有参数作为字符串传递,但出于某种原因,JS 想要将 RecordNum 转换为数字。我怎么能抑制这个。使用 IE 8.
嗯(根据你对我的评论的回复),如果你能看到你的代码正在生成 Javascript,它看起来像这样:
PlaceRecords(45.5262404, -122.6810841, A51210876, 123, 456);
现在你看到问题了吗?
您可能从一堆字符串开始,但您没有将它们用引号括起来,所以 Javascript 不认为它们是字符串。 51210876
之所以有效,是因为它是一个数字——即使您将它放在引号中,Javascript 也会对其进行几乎相同的处理。但与大多数语言一样(我已经将近 30 年没有编写 Pascal,但我确信它是一样的),A51210876
将被视为标识符名称而不是值,因为它以 alpha 开头字符.
假设你可以自由地将双引号放在单引号内,我建议你尝试这样的事情:
procedure TfrmMain.PlaceRecords(Lat,Lon,RecordNum, Dist:string; IconNo:integer);
begin
HTMLWindow2.execScript(Format(
'PlaceRecords(%s, %s, "%s", "%s", "%s")',
[Lat,Lon, RecordNum, Dist, IntToStr(IconNo)]),
'JavaScript'
);
end;
我知道 lats 和 longs 是数字,所以我没有将它们放在引号中。我不知道最后两个参数包含什么样的数据,所以我也把它们放在引号中。我想您可能会将它们全部放在引号中,因为任何 Javascript 行下期望数字 "should" 的行都确保该值实际上被视为数字。
注意在Javascript中,字符串可以用单引号或双引号括起来,在这种时候很方便。