这是我的代码。这是使用this.id
传递的函数,但在调试时它会以undefined
形式出现。
function display()
{
//creates request
request = createRequest();
if(request == null)
alert("Unable to create request");
else
{
//get value of radio button
var radioChoice = this.id;
var url = "processing.php?file=" + radioChoice; // creates URL
request.onreadystatechange = randomize(); // call back function
request.open("GET", url, true);
request.send(null); // sends request to server
}
}
这是单选按钮代码:
<div class="floatright">
<p>Select the quiz that has the scambled code you want to fix.</p>
<input type="radio" name="quiz" id="addpara" onClick="display()">Quiz 1 - addpara()</input><br />
<input type="radio" name="quiz" id="swaptext" onClick="display()">Quiz 2 - swaptext()</input><br />
<input type="radio" name="quiz" id="showhint" onClick="display()">Quiz 3 - show_hint()</input><br />
<br />
</div>
为什么我没有收到任何内容进入radioChoice
?
好的,我意识到我错过了先前任务的重要部分。这段代码:
function initPage()
{
var radioList = document.getElementsByName("quiz").length;
for(var i=0; i < radioList; i++)
{
document.getElementsByName("quiz")[i].disabled = true;
document.getElementsByName("quiz")[i].onclick = display; //register onclick event
}
}
我必须添加的部分是onclick事件注册,但现在这是我的问题:为什么它不起作用?如果我必须在HTML中包含onclick
,为什么它不会找到id
,但是当重新注册它时,它会呢?
答案 0 :(得分:0)
将this
作为参数传递:
function display(element)
在代码中使用element
代替this
。在您的HTML中,使用:
onclick="display(this)"
答案 1 :(得分:0)
执行:
//for all you onclicks
<input type="radio" name="quiz" id="addpara" onClick="return display(this);">Quiz 1 - addpara()</input>
和
function display(obj) {
...
...
}
答案 2 :(得分:0)
因为你已经给出了
<input type="radio" name="quiz" id="addpara" onClick="display()">Quiz 1 - addpara()</input><br />
function display(){
.....
}
所以这里display
是window对象的成员函数。因此,将其display()
调用等于window.display();
。显然this
将是窗口对象。
您可以将参数传递给`display,如下所示
<input type="radio" name="quiz" id="addpara" onClick="display(this, event)">Quiz 1 - addpara()</input><br />
function display(element, event){
// element - input element instance
// event - clcik event object
}
但是当您提供element.onclick = display;
时,作为元素成员函数的onclick
引用display
。因此,当此事件发生时,它将被调用为element.onclick(event)
,这会导致element.display(event). So inside
display value of
this`将成为元素。
另请参阅addEventListener:http://help.dottoro.com/ljeuqqoq.php
和
attachEvent:http://help.dottoro.com/ljinxrmt.php