html Javascript未从表单中提取值

6bc51xsx  于 2022-12-16  发布在  Java
关注(0)|答案(3)|浏览(132)

当尝试根据from的值来计算URL的值时,它会不断返回空值,并丢弃URL的构建。
我验证了ID匹配并且是唯一的,但是我是HTML/JavaScript的新手,所以我对我错过的东西视而不见。

function displayLink() {
  document.getElementById("link").innerHTML = URL;
}

var site = document.getElementById("site").value;
var prodtest1 = document.getElementById("test").value == "True" ? "-test.com/" : "-prod.com/";
var prodtest2 = document.getElementById("normal").value == "True" ? "test/" : "prod/";
var isBasic = document.getElementById("basic").value == "True" ? "AuthMethod=normal" : "html/public/";
var isHtml5 = document.getElementById("html").value == "True" ? "login.aspx" : "default.aspx";

var URL = Href = "https://" + site + prodtest1 + prodtest2 + isBasic + isHtml5;
<div>
  <!-- Start Inputs -->
  <Form class="input">
    <input type="text" placeholder="site" id="site">
    <br>
    <input type="checkbox" id="test">
    <label for="test">TEST</label>
    <input type="checkbox" id="normal">
    <Label for="normal">normal</Label>
    <input type="checkbox" id="html">
    <label for="html">html</label>
  </Form>
  <button type="Button" onclick='displayLink()'>Generate Link</button>
  <!-- Inputs End -->
</div>
<!-- Display URL Result -->
<div id="URL">
  <br>
  <a id=Link HREF="Link">
</div>
lnlaulya

lnlaulya1#

您的代码有一些我注意到的错误:

  • 没有ID为“basic”的元素
  • 在底部的链接中,“链接”没有引号,您需要将这些类型的内容放在引号中
  • 你的变量命名不一致,这可能是一些决定,使您的代码更可读。
  • 因为URL是在onClick()函数之外生成的,所以多次单击该按钮(比如激活不同的复选框或在输入中输入不同的站点)不会产生任何效果。
  • 尽管浏览器通常会让你编写像<input type="checkbox" id="html">这样的元素,但你真的应该在元素的末尾加上一个结束/,例如<input type="checkbox" id="html" />这是一个“自结束”HTML元素的语法,你需要在末尾加上一个斜杠。
  • 如果只执行document.getElementById("element").checked就可以更好地检查输入框是否被选中

对自己要有耐心,在写代码的时候一定要注意这些事情。如果你“修正”了所有这些事情(注意“修正”是在引号里的,因为有很多正确的方法来写代码),它看起来会像这样:
网址:

<div> 
<!-- Start Inputs -->
  <Form class="input">
    <input type="text" placeholder="site" id="site" /><br>
    
    <input type="checkbox" id="test" />
    <label for="test">TEST</label>
    
    <input type="checkbox" id="normal" />
    <label for="normal">normal</label>
    
    <label for="html">html</label>
    <input type="checkbox" id="html" />
  </Form>
  <button type="Button" onclick='displayLink()'>Generate Link</button>
  <!-- Inputs End -->
  </div>
<!-- Display URL Result -->
<div id="URL">
  <br>
  <a id="link" HREF="" /> <!-- You don't need HREF="" here, but I left it to make it clear it started out as a blank string. -->
 </div>

JavaScript语言:

function displayLink() {
    
  var siteInput = document.getElementById("site").value;
  var prodTest1 = document.getElementById("test").checked ? "-test.com/" : "-prod.com/";
  var prodTest2 = document.getElementById("normal").checked ? "test/" : "prod/";
// These is no element in your code with an ID of "basic" so this variable has been omitted. 
  var isHtml5 = document.getElementById("html").checked ? "login.aspx" : "default.aspx";
  
  var URL = "https://" + siteInput + prodTest1 + prodTest2 + isHtml5;
  console.log(URL)
  var linkElement = document.getElementById("link");
  linkElement.innerHTML = URL;
  linkElement.href = URL;
}
uqzxnwby

uqzxnwby2#

对于复选框类型的输入,checked属性将返回一个布尔值true或false,供您用于三元条件。

var prodtest1 = document.getElementById("test").checked ? "-test.com/" : "-prod.com/";

MDN文档中提供了更多信息

ctehm74n

ctehm74n3#

试试这个:

function displayLink() {
  var site = document.getElementById("site").value;
  var prodtest1 = document.getElementById("test").checked ? "-test.com/" : "-prod.com/";
  var prodtest2 = document.getElementById("normal").checked ? "test/" : "prod/";
  var isBasic = document.getElementById("basic").checked ? "AuthMethod=normal" : "html/public/";
  var isHtml5 = document.getElementById("html").checked ? "login.aspx" : "default.aspx";

  var URL = Href = "https://" + site + prodtest1 + prodtest2 + isBasic + isHtml5;

  document.getElementById("Link").innerHTML = URL;
  document.getElementById("Link").href = URL;

}
<div>
  <!-- Start Inputs -->
  <Form class="input">
    <input type="text" placeholder="site" id="site">
    <br>
    <input type="checkbox" id="test">
    <label for="test">TEST</label>
    <input type="checkbox" id="normal">
    <Label for="normal">normal</Label>
    <!-- added -->
    <input type="checkbox" id="basic">
    <label for="html">basic</label>
    <!-- /added -->
    <input type="checkbox" id="html">
    <label for="html">html</label>
  </Form>
  <button type="Button" onclick='displayLink()'>Generate Link</button>
  <!-- Inputs End -->
</div>
<!-- Display URL Result -->
<div id="URL">
  <br>
  <a id=Link HREF="Link">
</div>

相关问题