HTML将代码显示为文本而不是执行该功能

时间:2018-02-23 00:36:40

标签: javascript html wordpress

我是制作网站的新手,只有一些C ++的概念。所以我有这个代码 在HTML中:

<html>
<body>
<script type="text/javascript" src="http://localhost/Coin/wp-content/uploads/custom-css-js/77.js "></script>

<p>Click the button to trigger a function ".</p>

<button onclick="myFunction()">Generate question</button>

<p id="demo"></p>

<div id="quote"></div>

<script>
function myFunction() 
{
        document.getElementById("quote").innerHTML = showquote;               
}
</script>

</body>
</html>

这在JavaScript中:

var myArray = ['Question 1', 'Test2', 'Practise 3'];
var rand = Math.floor(Math.random() * myArray.length);

function showquote(){
    document.getElementById('quote').innerHTML = myArray[rand];
                    }
showquote();

单击该按钮时,将显示以下行:

function showquote(){ document.getElementById('quote').innerHTML = myArray[rand]; }

正如我所说,我只是在尝试这种我几乎不知道的语言,我不是在调用这个功能吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

function myFunction() 
{
        document.getElementById("quote").innerHTML = showquote;               
}

应该是

function myFunction() 
{
        showquote();               
}

点击here for an executable demo of the solution above

推理

当你这样做时

document.getElementById("quote").innerHTML = showquote;

您正在为内部HTML分配showquote函数的源代码。这就是您在页面中显示function showquote(){ document.getElementById('quote').innerHTML = myArray[rand]; }(源代码showquote)的原因。

所以,你真正想做的就是调用showquote函数,因为该函数只改变了HTML。因此正确的表达式是showquote(),它调用showcode函数。

其他改进

从现在开始,myFunction只是对showquote的调用:

function myFunction() 
{
        showquote();               
}

然后您实际上可以将其删除并直接在showquote元素中使用HTML

<button onclick="showquote()">Generate question</button>

另一件事是,在你的JavaScript文件中,第一次调用showquote,就在声明之后,在这里:

function showquote() {
      document.getElementById('quote').innerHTML = myArray[rand];
}
showquote(); // <----- this is the invocation I'm talking about

goint是否会产生错误。只是因为它的代码试图找到id = quote(此处为document.getElementById('quote'))的元素,并且此JavaScript代码正在执行,此类元素尚不存在。因此,您在此时收到错误。

这里的解决方案可能就是根本不打电话给showquote。或者在HTML页面底部附近的<script>标记中调用它,在声明quote元素之后的某个地方。