【发布时间】:2012-11-02 03:26:16
【问题描述】:
我正在尝试为我的项目制作上一个/下一个按钮。这是它的精简代码。
<html>
<head>
<script>
function prevP() {var element = document.getElementById("framePage");
element = element.src;
elementLen = element.length;
elementLen = elementLen-6;
elementChar = element.charAt(elementLen)
elementChar = --elementChar
newElement = element.replace(element.charAt(elementLen),elementChar);
document.getElementById("framePage").src=(newElement);}
function nextP() {var element = document.getElementById("framePage");
element = element.src;
elementLen = element.length;
elementLen = elementLen-6;
alert(elementLen);
elementChar = element.charAt(elementLen)
elementChar = ++elementChar
newElement = element.replace(element.charAt(elementLen),elementChar);
document.getElementById("framePage").src=(newElement);}
</script>
</head>
<body>
<iframe src="www.websiteendingwithnumber1.com" id="framePage"></iframe>
</br>
<input type="button" onClick="prevP()" value="Previous">
<input type="button" onClick="nextP()" value="Next">
</body>
</html>
我的项目创建了大约 40-120 个 html 页面以在 iframe 中显示。您可以使用“上一个/下一个”按钮来翻阅它们。每个页面都以最后的数字动态命名。例如 /path/mountpoint0/page/page0.html、page1.html ... page5.html 等等。我试图做的基本上是让这些函数中的每一个读取 iframe src 的当前 URL,然后根据您按下的按钮将其设置为所需的 src。基本上,如果您在第 5 页,它会将字符串切分,如果您点击上一个,则将 src 设置为 page4,如果您点击下一个,则将 src 设置为 page6,等等。
警告!对于动态生成的 iframe HTML 文件,我还有一个动态生成的挂载点 (ramdisk)。我的项目将检测是否存在挂载点并相应地重命名为新的挂载点,IE 如果 mountpnt0 存在,则创建并使用 mountpnt1,依此类推,直到可以为止。所以!我看到的错误是它更改了挂载点上的数字,而不是 html 文件。示例 iframe.src = /tmp/prevram0/html/page0.html。我单击下一步,将我吐到一个找不到页面的错误,并试图转到 /tmp/prevram1/html/page0.html。我再次点击下一个,然后它翻转另一个数字,/tmp/prevram1/html/page1.html。所需的操作是 iframe.src = /tmp/prevram0/html/page0.html。我单击下一步,然后将 iframe.src 设置为 /tmp/prevram0/html/page1.html。
如果这令人费解或没有多大意义,我很抱歉。这个项目的大部分内容都在 python 中,我希望使用 HTML/JS 来创建我的项目的报告功能。我对 python 还很陌生,对我的方法很了解,但是 JS 对我来说是全新的,所以我为我所有的(可能的)头痛导致菜鸟错误道歉。但我真的很想要一些关于如何最好地处理这个问题的方向和指导:)
非常感谢大家!
编辑 - 快速澄清。
编辑 2 - 我要感谢大家迄今为止的大力投入!我真的,真的很感激!我现在正在处理工作中的一些事情,所以当我有机会再坐下来处理我的项目时,我会尝试你的建议,看看会发生什么:) 再次感谢大家(和女孩?)!
编辑 3 - window.onload = 函数(){ 页号 = 0; baseUrl = document.getElementById('+q1+'baseurl'+q1+').innerHTML; }
window.onload = function(){
lPageNo = document.getElementById('+q1+'lPageNo'+q1+').innerHTML;
}
function prevP() {
if(pageNo > 1) { pageNo--; }
var prevEl = document.getElementById('framePage');
prevEl.src = baseUrl + pageNo + '.html';
}
function nextP() {
if(pageNo<lPageNo) { pageNo++; }
var nextEl = document.getElementById('framePage');
nextEl.src = baseUrl + pageNo + '.html';
}
<span id="baseurl" style="display:none;">'+prevram+'/html/page</span>
<span id="lPageNo" style="display:none;">'+str(ptit)+'</span>
(prevram、q1 和 ptit 是我的 python 脚本中的 python 变量。prevram 是挂载点,ptit 是页码计数器。q1 是单引号。)
【问题讨论】:
-
Err... 您能否澄清一下何时确定挂载点?它是通过javascript完成的,还是在服务器端完成的?
-
@user1600124 - 这个脚本实际上是在本地机器上运行的。它是一个 python 脚本,它生成并挂载挂载点。脚本的另一部分生成网页和其中包含的 JS,其中显示了 python 脚本所做的结果,因此 python 脚本确定本地计算机上的挂载点并挂载它。 - 编辑澄清。
-
抱歉,周末不在电脑前。请问您为什么使用 document.getElementById('+q1+'lPageNo'+q1')?因为 span id 只是 "lPageNo"... 是 '+q1+' = '"'?
-
@user1600124 抱歉,我从我的脚本中复制并粘贴了。那是 python 变量赋值,我必须为单引号使用变量,这样它就不会破坏我的变量赋值,因为它被包裹在单引号中。
-
@user1600124 知道了,参考你的答案;)谢谢!
标签: javascript button iframe src