我需要在网页上添加类似如下的文字:
如果用户在基于 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
我设法创建了三个几乎相同的javascripts,它们部分有效。一个脚本为我提供了osHomeDir
,另一个osType
的值,另一个给了我osSeparator
的值。我的问题是我不知道如何从java脚本和我的网页中一致地获取这些值。我得到的是第一次替换有效,但我不能重复 - 例如,在我的Mac上我看到:
在Macintosh PC上查找文件/ Users / yournamedir1dir2filename 而不是所需的文件: 在Macintosh PC上查找文件/ Users / yourname / dir1 / dir2 / filename
请注意osSeparator
的第一次替换是如何工作的。
我希望有人可以告诉我两件事:
不要过于担心这个例子 - 我已经简化它以使其可读。我在很多地方遇到同样的问题。我知道我 COULD 解决了这个问题,我在一个脚本中返回了整个句子,但这完全没有理解这一点。
<!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:\Users";
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="\";
document.getElementById("osSeparatorId").innerHTML=osSeparator;
</script>
</body>
</html>
答案 0 :(得分:1)
您使用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">
答案 1 :(得分:0)
我改变了使用函数而不是getElementsByClassName
我现在可以得到“期望的”结果,但我确信可以在脚本中添加更高的效率,以便最后保存if...if else...if else
结构。
这是有效的代码:
<script>
function localised() {
var printItem=arguments[0];
var osHomeDir="/home";
var osSeparator="/";
var osType="Linux";
if (window.navigator.platform.indexOf("Win") != -1) {
osHomeDir="C:\Users";
osType="Windows";
osSeparator="\"
}
if (window.navigator.platform.indexOf("Mac")!=-1) {
osHomeDir="/Users";
osType="Macintosh";
}
if (printItem=="osHomeDir") document.write(osHomeDir);
else if (printItem=="osType") document.write(osType);
else if (printItem=="osSeparator") document.write(osSeparator);
}
</script>
<p>Look for the file <script>localised("osHomeDir");</script><script>localised("osSeparator");</script>yourname<script>localised("osSeparator");</script>dir1<script>localised("osSeparator");</script>dir2<script>localised("osSeparator");</script>filename on your <script>localised("osType");</script> PC</p>
</body>
</html>
答案 2 :(得分:0)
记住:所需的输出(例如在OS X上)=&gt;
在Macintosh PC上查找文件/ Users / yourname / dir1 / dir2 / filename
使用上面的Max代码输出=&gt;
在Macintosh PC上查找文件/ Usersyournamedir1dir2filename
请注意,在这种情况下,甚至不会显示osSeparatorId
的单个实例。
我还有3个单独的脚本可以做同样的工作。
证明我完全按照描述实现了Max的代码:
<!DOCTYPE html>
<html>
<body>
<!--Note that the following line is now using <a class="osSeparatorId"> instead of <a id="osSeparatorId"> -->
<p> Look for the file <a id="osHomeDirId"></a><a class="osSeparatorId"></a>yourname<a class="osSeparatorId"></a>dir1<a class="osSeparatorId"></a>dir2<a class="osSeparatorId"></a>filename on your <a id="osTypeId"></a> PC</p>
<script>
var osHomeDir = "/home";
if (window.navigator.platform.indexOf("Win") != -1) osHomeDir="C:\Users";
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>
<!--Note that the following is cut and pasted from Max's answer-->
<script>
var separators=document.getElementsByClassName("osSeparatorId");
for(var i=0;i<separators.length;i++){
separators[i].innerHTML=osSeparator;
}
</script>
</body>
</html>