0

我正在创建一个随机事实生成器,它将被写入<p>标签内。我遵循了每个教程,但我看不出问题出在哪里。该功能正在正常调用(我用警报检查)。

这是代码:

HTML:

<p id="rfact" name="rndfact">random fact goes here</p>

JS:

function rfact(){
 var nrfact=Math.floor(Math.random()*2)
 alert(nrfact);
 if (nrfact==0) document.getElementByName("rndfact").innerHTML="random fact1";
 if (nrfact==1) document.getElementByName("rndfact").innerHTML="random fact2";
 if (nrfact==2) document.getElementByName("rndfact").innerHTML="random fact3";
 }
4

7 回答 7

4

你的问题是没有调用函数getElementByNamedocument

你想要其中之一:

document.getElementById('rfact');
document.getElementsByName('rndfact')[0] // notice the plural
于 2013-09-06T13:36:05.227 回答
1

您正在使用一种不存在的方法。没有这样的方法getElementByName

使用其中一个document.getElementsByName(注意元素中的复数,你会得到一个数组),或者document.getElementById(这是正确的方法)。

解决方案:http: //jsfiddle.net/P7wev/

于 2013-09-06T13:36:53.517 回答
1

使用getElementById,因为您提供的getElementByName不存在, P标签内的name属性也不存在。

function rfact(){
 var nrfact=Math.floor(Math.random()*2);
 alert(nrfact);
 if (nrfact==0) document.getElementById("rfact").innerHTML="random fact1";
 if (nrfact==1) document.getElementById("rfact").innerHTML="random fact2";
 if (nrfact==2) document.getElementById("rfact").innerHTML="random fact3";
}
于 2013-09-06T13:39:26.570 回答
0

改为使用document.getElementById("rfact").innerHTML=...

于 2013-09-06T13:33:26.667 回答
0

你有一个 id set 使用它来代替。getElementsByName返回一个数组,您必须在访问属性之前使用数组表示法访问返回innerHTML

使用 getElementById

function rfact(){
   var nrfact=Math.floor(Math.random()*3)
   alert(nrfact);
   var element = document.getElementById("rfact");
   if (nrfact==0) element.innerHTML="random fact1";
   if (nrfact==1) element.innerHTML="random fact2";
   if (nrfact==2) element.innerHTML="random fact3";
}

使用 getElementsByName

function rfact(){
   var nrfact=Math.floor(Math.random()*3)
   var elements = document.getElementsByName("rndfact");
   if (nrfact==0) elements[0].innerHTML="random fact1";
   if (nrfact==1) elements[0].innerHTML="random fact2";
   if (nrfact==2) elements[0].innerHTML="random fact3";
}

并在公式中使用 3 而不是 2 以允许最多 3 个事实。

于 2013-09-06T13:35:17.817 回答
0

HTML --> id="rndfact"

<p id="rndfact" name="rndfact">random fact goes here</p>

JS --> getElementById

function rfact() {
    var nrfact = Math.floor(Math.random() * 3);

    if (nrfact == 0) document.getElementById("rndfact").innerHTML = "random fact1";
    if (nrfact == 1) document.getElementById("rndfact").innerHTML = "random fact2";
    if (nrfact == 2) document.getElementById("rndfact").innerHTML = "random fact3";
}
rfact()

使用 getElementById 或使用 getElementsByName[0]

于 2013-09-06T13:35:44.350 回答
0

这应该对你有用。

<script type="text/javascript">

    window.onload=function(){
rfact();
function rfact(){
 var nrfact=Math.floor(Math.random()*2)
 alert(nrfact);
 if (nrfact==0) document.getElementById("rfact").innerHTML="random fact1";
 if (nrfact==1) document.getElementById("rfact").innerHTML="random fact2";
 if (nrfact==2) document.getElementById("rfact").innerHTML="random fact3";
 }

    }
</script>
于 2013-09-06T13:38:45.867 回答