【问题标题】:Adding IF statement to Javascript App stops execution将 IF 语句添加到 Javascript App 停止执行
【发布时间】:2023-02-23 09:34:00
【问题描述】:

我用 Javascript 代码编写了一个 HTML 页面,旨在简化对 PDF 目录的访问。 有两个 iFrame 加载两个 .txt 文件,一个是目录号到页码,另一个是描述到页码。用户在蓝色框中输入页码,当他们单击绿色按钮时,PDF 在该页面的新窗口中打开。 (见附图)

Screenshot

这是原始代码,可以正常工作

<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存在吗?否则,此代码将抛出一个错误,您应该会在浏览器的控制台中看到该错误。

标签: javascript if-statement


【解决方案1】:

if (CatNumber.value.substring(0, 1) = "A")你正在测试作业,你需要使用=====

分配总是真实的。

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多