前几天我刚刚开始学习JS,而且(当然)遇到了一些困难。我通常会很快掌握一些事情,但我不能为我的生活找到解决方案。我想理解为什么会这样。
我的目标是使用3个提示框,一个接一个地打印出来,打印出一段html代码,这将是一个简单的URL。我会为此添加更多内容,但我想先通过这个。
目前,我正在收到提示,但在我将数据输入第三个框并提交后,没有任何反应。
我在这里做错了什么?如果我的document.write代码出错,我应该注意哪些事情?
谢谢!..
function show_prompt()
{
var site_type = prompt("What kind of link is this?");
var site_url = prompt("What is the URL?");
var site_title = prompt("Give the link a title");
if (site_type = website) {
document.write("<a style=\"color: #777777\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>");
}
else
if (site_type = video) {
document.write("<a style=\"color:#98B2C3\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>");
}
else
if (site_type = image) {
document.write("<a style=\"color:#8D5359\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>");
}
else
(site_type = article); {
document.write("<a style=\"color:#768D53\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>");
}
}
答案 0 :(得分:2)
好吧,在我们开始尝试研究if语句的工作原理之前,我们需要解决一下这样的事实:你分配而不是比较 if()语句。
不要在if语句中使用单个=符号,而是需要有2个等号。像这样:
if (site_type == website)
单个=符号用于分配变量,因此在您的情况下,您实际上是将网站的值分配给site_type的变量 - 而不是比较两个单独的值。
试试这个:
function show_prompt()
{
var site_type = prompt("What kind of link is this?");
var site_url = prompt("What is the URL?");
var site_title = prompt("Give the link a title");
if (site_type == "website") {
document.write("<a style=\"color: #777777\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>");
}
if (site_type == "video") {
document.write("<a style=\"color:#98B2C3\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>");
}
if (site_type == "image") {
document.write("<a style=\"color:#8D5359\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>");
}
if(site_type == "article") {
document.write("<a style=\"color:#768D53\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>");
}
}
我在上面的块中对您的代码进行了一些更改,而不仅仅是删除了else语句。我还对字符串进行了if()比较检查而不是像以前那样对空变量进行检查,并且我已经更改了document.write函数以使用添加的提示字符串。 如果我们能够实现这一目标,我们就可以开始考虑我们真正希望在以后将else语句放在哪里:)
答案 1 :(得分:0)
将“if(site_type = website){”替换为“if(site_type == website){” 和其他人。
答案 2 :(得分:0)
除了Steerpike和Andres的任务与比较问题之外,您还会遇到问题,因为您要将变量site_type
与另一个变量进行比较:website
或video
或image
或article
。这些是未初始化的变量,因此条件实际上将检查site_type == null
原始代码中发生了以下情况:
// The value on the right side of the = is assigned to site_type.
// All of these are uninitialized, so will evaluate to null
// Since null is falsy, each conditional fails
if (site_type = website){
...
} else if (site_type = video){
...
} else if (site_type = image){
...
} else if (site_type = article){
...
}
答案 3 :(得分:0)
除了使用赋值而不是比较运算符之外,您还应该引用字符串。
例如:
if (site_type == 'video') {
document.write("<a style=\"color:#98B2C3\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>");
}
除非这些变量实际上是变量video
,否则如果未定义则会产生错误,因此JavaScript会停止。
如果您不使用Firefox,请下载并安装Firebug。 http://getfirebug.com/
它会让您知道JavaScript错误是什么,并提供了许多其他工具。