javascript输出消失了

时间:2012-07-04 07:55:44

标签: javascript

 function init(){
    var flag=true;
    if(flag)
    {
        document.getElementById("panel").innerHTML=
            "power is on<br />";
    }
    if(7<2)
    {
        document.getElementById("panel").innerHTML=
            "<br />failure";
    }
        if(2<7)
    {
        document.getElementById("panel").innerHTML=
            "<br />success";
    }
}
window.onload=init;

这是if.js我将它加载到另一个html文件中,但这是运行的主要代码。

我得到的唯一输出是“成功”被写入但是“电源开启”并没有出现什么问题?

6 个答案:

答案 0 :(得分:2)

不要在多个地方分配innerHTML,创建一个字符串并立即分配它。

var flag = true,
    html = "";
if (flag) {
    html += "power is on<br />";
}
if (7 < 2) {
    html += "<br />failure";
}
if (2 < 7) {
    html += "<br />success";
}
document.getElementById("panel").innerHTML = html;

答案 1 :(得分:0)

  var panel =  document.getElementById("panel");
    if(flag) {
        panel.innerHTML += "power is on<br />";
    }

    if(7<2) {
        panel.innerHTML += "<br />failure";
    }
    if(2<7) {
        panel.innerHTML += "<br />success";
    }

每次更改innerHTML时,您都会覆盖所有以前的内容,因此您必须使用+=附加字符串。

也许您可能只想创建一次对panel元素的引用。

示例小提琴:http://jsfiddle.net/ypznU/

答案 2 :(得分:0)

您正在替换当前的HTML,您应该使用+ =而不是=。

function init(){
var flag=true;
if(flag)
{
    document.getElementById("panel").innerHTML +=
        "power is on<br />";
}
if(7<2)
{
    document.getElementById("panel").innerHTML +=
        "<br />failure";
}
    if(2<7)
{
    document.getElementById("panel").innerHTML +=
        "<br />success";
}

这对你有什么用?

答案 3 :(得分:0)

设置元素innerHTML先前使用给定HTML字符串的内容替换为。所以正在发生的事情是“电源开启”瞬间可见(计算机现在非常快),然后立即取代“成功”。

答案 4 :(得分:0)

您可以使用else而不是if

function init(){
    var flag=true;
    if(flag)
    {
        document.getElementById("panel").innerHTML=
            "power is on<br />";
    }
    else if(7<2)
    {
        document.getElementById("panel").innerHTML=
            "<br />failure";
    }
        else if(2<7)
    {
        document.getElementById("panel").innerHTML=
            "<br />success";
    }
}
window.onload=init;

请注意以上代码始终显示“电源已打开”,因为在您的方法中,您将标志分配为true,如果您想要多个输出,则可以使用串联方法,如其他建议。

答案 5 :(得分:0)

最后一个if语句将始终评估为true。

if(2<7)
{
    document.getElementById("panel").innerHTML=
        "<br />success";
}

这意味着“成功”将始终取代面板元素内的任何内容。 确保您的条件确实是您想要的,并且替换实际上是您的意图。否则,像其他人建议的那样追加字符串。