передача идентификатора в javascript - PullRequest
0 голосов
/ 12 марта 2012

Вот мой код.Это функция, которая использует 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, но теперь вот мой вопрос: почему это не работает по-другому?Если мне нужно иметь onclick внутри HTML, почему бы ему не найти id, но при перерегистрации это делает?

Ответы [ 3 ]

0 голосов
/ 12 марта 2012

До:


//for all you onclicks
<input type="radio" name="quiz" id="addpara" onClick="return display(this);">Quiz 1 - addpara()</input>

И


function display(obj) {
...
...

}

0 голосов
/ 12 марта 2012

Поскольку вы задали

<input type="radio" name="quiz" id="addpara" onClick="display()">Quiz 1 - addpara()</input><br />

function display(){
.....

}

Итак, display - это функция-член объекта окна.Так что вызов его как 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), что приводит к элементу .display (событие) . So inside display value of this` будет элементом.

Также см. AddEventListener: http://help.dottoro.com/ljeuqqoq.php

и

attachEvent: http://help.dottoro.com/ljinxrmt.php

0 голосов
/ 12 марта 2012

Передайте this в качестве параметра:

function display(element)

И используйте element вместо this в вашем коде.В вашем HTML используйте:

onclick="display(this)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...