0

我确定标题看起来像以前被问过的东西,但我已经搜索过这个问题的答案,但我找不到它。

我对编码真的很陌生,所以请原谅我犯的任何非常明显的错误。

我正在处理的代码的上下文:我正在学习游戏设计课程,我决定从事一个制作 HTML JS 游戏的个人项目。

我知道代码可能很粗糙/糟糕/绝对不是最好的做事方式,但在我提高技能之前它会继续如此(或获得有关如何改进它的建议) .

我需要帮助:在两到三周的时间里,我无法弄清楚在 if else 语句中实现时如何让按钮出现。

像这样:

if(condition)
{
    document.write("text");
    //desired button here
}
else  
{  
    //Backup code  
}

最终,我想出了两种方法(对于 Chrome 和 Internet Explorer)。

第一种方式:

function myFunction()
    {
    document.close();
    document.write("text");
    /* There will be buttons in here 
    too when I get things working. */
    }

//In separate script tags 
/* myFunction() dwells in the head of the 
page while the if statement is in the body 
and another function*/

if(condition)
    {
    document.write("text");
    var gameElement=document.createElement("BUTTON");
    var text=document.createTextNode("CLICK ME");
    gameElement.appendChild(text);
    gameElement.onclick = myFunction;
    document.body.appendChild(gameElement);
    }
else
    {
    //Backup code
    }

第二种方式:

(相同的功能,它们都在同一个地方)。

if(condition)
    {
    document.write("text");
    var gameElement;
    gameElement = document.createElement('input');
    gameElement.id = 'gameButton';
    gameElement.type = 'button';
    gameElement.value='Continue';
    gameElement.onclick = myFunction;
    document.body.appendChild(gameElement);
    }

这对我很有效。

虽然它在 IE 和 Chrome 中运行良好,但在 Firefox 中不起作用。

经过我在这个按钮上投入了多少时间和研究,我很想知道为什么它不会出现在 Firefox 中。我已经阅读了很多关于 Firefox 以及如何 .onclick 不起作用或必须启用或禁用 JavaScript 之类的内容。我只是有点困惑。

我也开放任何真实/相关的建议。

4

2 回答 2

2

我设置了这个小提琴。我删除了您的document.write()调用,因为它们在 JSFiddle 中被禁止,并将您的条件更改为true以便代码可以工作,并且它可以在 FF24 中工作。

document.write()可能是您的问题的原因。无论如何,这是不好的做法,因为它可能会导致重新解析文档,或者擦除整个文档并重新开始编写它。您已经在使用一些 DOM 操作来添加按钮。我建议你对任何你正在考虑使用的东西也这样做document.write()

于 2013-10-20T21:30:39.280 回答
0

我建议您看一下 jQuery,而不是建议您的问题的解决方案,这是一个非常好的 JavaScript 框架,它使您可以编写跨浏览器兼容的代码,这似乎是您的问题。

使用 jQuery,您将能够编写如下内容:

$("#gameButton").click(function() { myFunction(); }

当单击具有 id 'gameButton' 的控件时,这将触发您的 myFunction() 函数。

访问www.jquery.com了解更多信息

于 2013-10-20T21:27:47.197 回答