-2
 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 文件中,但这是运行的主要代码。

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

4

6 回答 6

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;
于 2012-07-04T08:02:50.800 回答
0

您可以使用 else if 代替 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;

请注意,上面的代码总是显示“power is on”,因为在您的方法中您将 flag 分配为 true,如果您想要多个输出,您可以按照其他建议使用连接方法。

于 2012-07-04T08:08:03.163 回答
0

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

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

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

于 2012-07-04T08:09:28.187 回答
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都会覆盖所有以前的内容,因此您必须在字符串后面附加+=.

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

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

于 2012-07-04T07:58:07.493 回答
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";
}

这对你有什么作用?

于 2012-07-04T07:58:26.000 回答
0

innerHTML元素的设置用给定的 HTML 字符串替换它之前的任何内容。所以发生的事情是“power is on”在瞬间可见(现在的计算机真的很快),然后立即被“success”取代。

于 2012-07-04T07:59:03.953 回答