JS:通过document.write显示带有变量的html

时间:2009-09-01 19:06:24

标签: javascript html document.write

前几天我刚刚开始学习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>");
                }
}

4 个答案:

答案 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与另一个变量进行比较:websitevideoimagearticle。这些是未初始化的变量,因此条件实际上将检查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错误是什么,并提供了许多其他工具。