问题定义
我需要将类似于以下内容的文本放在网页上:
如果用户在基于Windows的系统上操作,我希望他们看到:
在您的Windows PC上查找文件C:\Users\yourname\dir1\dir2\filename
如果用户在基于OS X的系统上操作,我希望他们看到:
在Macintosh PC上查找文件/Users/yourname/dir1/dir2/filename
如果用户在基于[任何其他| Linux]的系统上操作,我希望他们看到:
在Linux PC上查找文件/home/yourname/dir1/dir2/filename
研究
我已经成功地创建了三个几乎完全相同的javascript,它们部分工作。一个脚本给我osHomeDir的值,另一个脚本给我osType的值。我的问题是,我不知道如何将这些值从java脚本中持续地获取到我的网页中。我得到的是第一个替换是可行的,但我不能重复——例如,在我的Mac上我看到:
在Macintosh PC上查找文件/Users/yournamedir1dir2filename,而不是所需的文件:
在Macintosh PC上查找文件/Users/yourname/dir1/dir2/filename
请注意只有第一个替换osSeparator是如何工作的。
期望结果
我希望有人能告诉我两件事:
如何使脚本更有效-三个几乎相同
脚本肯定可以更改为返回三个值的脚本
能够多次使用结果的能力
在我的例子中)
笔记
不要太在意这个例子,我已经把它简化了,使之可读。我在很多地方也有同样的问题。我知道我可以解决这个问题,把整句话都放在一个剧本里,但那完全没有意义。
我的代码

<!DOCTYPE html>
<html>
<body>

<p> Look for the file <a id="osHomeDirId"></a><a id="osSeparatorId"></a>yourname<a id="osSeparatorId"></a>dir1<a id="osSeparatorId"></a>dir2<a id="osSeparatorId"></a>filename on your <a id="osTypeId"></a> PC</p>

<script>
var osHomeDir = "/home";
if (window.navigator.platform.indexOf("Win") != -1) osHomeDir="C:&#92Users";
if (window.navigator.platform.indexOf("Mac")!=-1) osHomeDir="/Users";
document.getElementById("osHomeDirId").innerHTML=osHomeDir;
</script>

<script>
var osType = "Linux";
if (window.navigator.platform.indexOf("Win") != -1) osType="Windows";
if (window.navigator.platform.indexOf("Mac")!=-1) osType="Macintosh";
document.getElementById("osTypeId").innerHTML=osType;
</script>

<script>
var osSeparator = "/";
if (window.navigator.platform.indexOf("Win") != -1) osSeparator="&#92";
document.getElementById("osSeparatorId").innerHTML=osSeparator;
</script>


</body>
</html>

最佳答案

使用document.getElementById(),它只获取具有指定id的第一个元素。此外,不应多次使用id。你应该改为上课。您需要使用document.getElementsByClassName()返回一个数组,然后循环遍历该数组的所有元素,并将innerHTML属性设置为osSeparator。

var separators=document.getElementsByClassName("osSeparatorId");
for(var i=0;i<separators.length;i++){
    separators[i].innerHTML=osSeparator;
}

然后您需要将html更改为<a class="osSeparatorId">

07-24 09:44
查看更多