2013-03-26 77 views
0

我正在創建測試表單。我創建了一個包含要測試的步驟列表的表單。創建通過失敗輸入功能

相反名單需要對每一個項目的:

<input type="radio" name="step1">Pass<input type="radio" name="step1">Fail 

我想創造一個功能,所以我只能把它每次創建它的時間。 這是我的功能至今:

function createPassFail(name) 
{ 
    var Pass = document.createElement('input'); 
    Pass.type = "radio"; 
    Pass.name = name; 
    document.getElementById("Pass").innerHTML = "Pass"; 

    var Fail = document.createElement('input'); 
    Fail.type = "radio"; 
    Fail.name = name; 
    document.getElementById("Fail").innerHTML = "Fail"; 
} 

然後我把它叫做:

<li>Step One: Turn the TV On 
<input id = "step1" onload="createPassFail(this.value)"> 
</li> 

這一切確實是創建一個文本框,這是不是我要的。我也不確定onload是否正確。

+0

看着它後,我還想添加評論框中的及格或不及格的選擇之下,又具有1個功能我可以打電話給我想把這將是每個地方比手動將其放置在每個地方要容易得多。 – Brad 2013-03-26 16:34:58

回答

1

而是在value傳遞給函數,你應該通過ID:

onload="createPassFail(this.id)" 
//       ^^ 

我說,你的事件應該是onblur,因爲我不認爲onload是你應該使用的事件處理程序。您可以使用我的建議,也可以在文本框旁邊設置一個按鈕,點擊按鈕(使用onclick)就可以做到您想要的。

此外,您還沒有將通過或失敗的元素插入到HTML中。試試這個:

document.body.appendChild(Pass); 
document.body.appendChild(Fail); 

這將新創建的元素直接插入到body元素的末尾。如果您希望它們對其中某個元素是孩子,則必須使用合適的方法訪問該元素。例如,getElementById

document.getElementById(element).appendChild(Pass); // do the same for Fail 

然而,這都可以很容易地用jQuery做。

$(document).ready(function() { 
    function createPassFail(name) 
    { 
     $('body').append('<input type="radio" id="' + name + '">Pass'); 
     $('body').append('<input type="radio" id="' + name + '">Fail'); 
    } 

    $('#step1').ready(function() { 
     createPassFail(this.id); 
    }); 
}); 

Live Demo

+0

我不需要評論框,我寧願通過/失敗一直在運行。我正在嘗試你說的第一種方式,並且無法使其工作。 http://jsfiddle.net/6yHTa/ – Brad 2013-03-26 15:42:42

+0

這樣的代碼應該工作,因爲''被加載之前,你這樣做。此外,jQuery的一個爲你工作 - http://jsfiddle.net/DAsuJ/ – 0x499602D2 2013-03-26 15:53:00

+0

我看到它在jsfiddle工作,但它不工作在我的代碼。我還需要爲每一步添加#step1嗎? – Brad 2013-03-26 16:02:49