将id传递给javascript

时间:2012-03-12 04:35:30

标签: javascript user-interface

这是我的代码。这是使用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,但是当重新注册它时,它会呢?

3 个答案:

答案 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