我有一個自定義jQuery腳本,在所有bowsers工作正常,但一個(Explorer 6中,7,8?)。jQuery的錯誤,只能用資源管理器
代碼的目的是允許用戶將多個表單字段添加到其形式(如果用戶想要不止一個電話號碼或一個以上的網絡地址)。使得具有任何類「A」的標籤含有「添加」這是寫
被綁定到jQuery函數。
我得到的錯誤是:形式的
///////////////////////////////
Line: 240
Char: 5
Error: 'this.id.3' is null or not an object
Code: 0
///////////////////////////////
HTML: (請注意,我知道該窗體標籤是不是在這裏,這是一個更大形式的一小部分。
<ul>
<li>
<ul>
<li class="website">
<input id="website1_input" name="website[1][input]" type="text" value="www.test.org"/>
<input type="checkbox" id="website1_delete" name="website[1][delete]" class="element radio" value="1" />
<label for="website1_delete">Delete</label>
</li>
</ul>
<a href="#" id="addWebsite">add another website</a>
</li>
</ul>
現在jQuery的:
應該有一個頁面上包含至少一個李 所有LIS的UL應該有一個某一類像「手機」或「地址」 後/ UL應該有一個匹配ID的鏈接,像 「addPhone」或「addAddress」。 href屬性應該是「#」。
function makeAddable(theClass) {
$('#add' + theClass[0].toUpperCase() + theClass.substr(1)).click(function() {
var numItems = $('.' + theClass).length;
var newItem = $('.' + theClass).eq(numItems - 1).clone();
newItem.find('input[type=text]').val('');
numItems++; // number in the new IDs
// keep ids unique, linked to label[for], and update names
// id & for look like: phone1_type, phone1_ext, phone13_p1, etc.
// names look like: phone[1][type], phone[1][ext], phone[13][p1], etc.
newItem.find('[id^=' + theClass + ']').each(function(i) {
var underscoreIndex = this.id.indexOf('_');
var idNum = this.id.substring(theClass.length, underscoreIndex);
this.id = this.id.replace(idNum, numItems);
});
newItem.find('[for^=' + theClass + ']').each(function(i) {
var jqthis = $(this);
var forAttr = jqthis.attr('for');
var underscoreIndex = forAttr.indexOf('_');
var idNum = forAttr.substring(theClass.length, underscoreIndex);
forAttr = forAttr.replace(idNum, numItems);
jqthis.attr('for', forAttr);
});
newItem.find('[name^=' + theClass + ']').each(function(i) {
var jqthis = $(this);
var nameAttr = jqthis.attr('name');
var bracketIndex = nameAttr.indexOf(']');
var idNum = nameAttr.substring(theClass.length + 1, bracketIndex);
nameAttr = nameAttr.replace(idNum, numItems);
jqthis.attr('name', nameAttr);
});
$(this).prev('ul').append(newItem);
return false;
});
}
// Automatically enable all <a href="#" id="addSomething"> links
$(function() {
$('a[href=#][id^=add]').each(function(i) {
makeAddable(this.id[3].toLowerCase() + this.id.substr(4));
});
});
當我改變 「this.id [3] .toLowerCase()」 到 「this.id.charAt(3).toLowerCase()」 我得到:「錯誤: '0' 是空值或不未定義對象」 – superUntitled 2009-06-22 19:22:55
顯然,在IE串[指數]。因此,對於第二個錯誤,它將是theClass.charAt(0),而不是theClass [0]。你也可以使用stringName [number]。 – Sean 2009-06-22 19:30:57