【发布时间】:2023-02-23 09:34:00
【问题描述】:
我用 Javascript 代码编写了一个 HTML 页面,旨在简化对 PDF 目录的访问。 有两个 iFrame 加载两个 .txt 文件,一个是目录号到页码,另一个是描述到页码。用户在蓝色框中输入页码,当他们单击绿色按钮时,PDF 在该页面的新窗口中打开。 (见附图)
这是原始代码,可以正常工作
<div class="tooltip">
<span class="tooltiptext">Hint: Ctrl/F will open a Browser search box that will help you locate items in the above list boxes</span>
<font size = +1>Enter RTM Catalogue Page Number:</font><br>
Page # <input class = "numberbox" type="text" value="347" id="PageNum"><br>
</div>
<br>
<div class="tooltip">
<span class="tooltiptext">Each PDF page number appears as a new browser window, so you can have several different pages open at once</span>
<button class = "btn" id = "go" onclick="OpenRTMcatPDF()">Click here to open in RTM 2021 catalogue</button>
</div>
<script>
RTM CATALOGUE PDF
function OpenRTMcatPDF(){
Get the text field
var CatNumber = document.getElementById("PageNum");
let text1 = "2021-RTM-Catalogue.pdf #page=";
let text2 = CatNumber.value;
let text3 = "";
let result = text1.concat(text2,text3);
text3 is used for instances where a post-amble is needed, not used here.
window.open(result, '_blank')
}
</script>
<br>
<iframe height="200" style="width:15%;" src = "./RTM 2021 Cat Nos to Pages.txt"> </iframe>
<iframe height="200" style="width:35%;" src = "JCCat2021CompleteIndex sorted.txt"> </iframe>
<br>
我想添加的另一个目录很复杂,因为它分为两个 PDF,“A”和“B”
我需要添加代码来提取页码的数字部分(例如 A234 中的 234)并检测 A 或 B 前缀。
如果我在下面添加代码
// 提取字段的数字部分
没问题; PDF 在正确的页面上打开,但目前仅在“A”目录中
但是当我在下面添加代码时 // 检测“A”或“B”目录
该行:window.open(result, '_blank') 从不执行
function OpenJC2021catPDF(){
Get the text field
var CatNumber = document.getElementById("JC2021PageNum");
let text1 = "Jaycar-2021-catalogue-AU-Front.pdf #page=";
let text2 = CatNumber.value;
let text3 = "";
// Detect "A" or "B" catalogue
if (CatNumber.value.substring(0, 1) = "A") {text1 = "Jaycar-2021-catalogue-AU-Front.pdf #page=";}
else {text1 = "Jaycar-2021-catalogue-AU-Back.pdf #page=";}
//Extract the numeric part of the field
var matches = text2.match(/(\d+)/);
text2 = matches[0]
let result = text1.concat(text2,text3);
window.open(result, '_blank')
}
</script>
如果我简单地删除这两行
如果 (CatNumber.value.substring(0, 1) = "A") {text1 = "Jaycar-2021-catalogue-AU-Front.pdf #page=";} else {text1 = "Jaycar-2021-catalogue-AU-Back.pdf #page=";}
脚本运行;它在正确的页面上打开 PDF,但仅在“A”(正面)目录上打开。
我尝试了各种方法来做到这一点,结果都是一样的。 IF 语句似乎有问题,但我不知道我做错了什么。
【问题讨论】:
-
单个等号字符
=进行赋值,而不是比较。你确定CatNumber.value存在吗?否则,此代码将抛出一个错误,您应该会在浏览器的控制台中看到该错误。