为什么这个javascript函数没有执行,控制台没有错误

时间:2011-01-12 20:15:04

标签: javascript

此功能有问题:

function addInvoiceItemValue(name,pkwiu,netto,unit,qty,vat) {

if(vat == '23') v23 = " selected='selected'";
if(vat == '22') v22 = " selected='selected'";
if(vat == '8') v8 = " selected='selected'";
if(vat == '7') v7 = " selected='selected'";
if(vat == '5') v5 = " selected='selected'";
if(vat == '3') v3 = " selected='selected'";
if(vat == '0') v0 = " selected='selected'";
if(vat == 'zw') vzw = " selected='selected'";

var vatSelect = "<option value='23'"+v23+">23%</option><option value='22'"+v22+">22%</option><option value='8'"+v8+">8%</option><option value='7'"+v7+">7%</option><option value='5'"+v5+">5%</option><option value='3'"+v3+">3%</option><option value='0'"+v0+">0%</option><option value='zw'"+vzw+">zw.</option>";
var row = "<tr id='item" + itemID + "'><td><input size='30' maxlength='300' id='ii-name-" + itemID + "' name='ii-name-" + itemID + "' value='" + name + "'></td>";
row += "<td><input size='6'  maxlength='50' id='ii-pkwiu-" + itemID + "' name='ii-pkwiu-" + itemID + "' value='"+pkwiu+"'></td>";
row += "<td><input size='6'  maxlength='16' id='ii-netto-" + itemID + "' name='ii-netto-" + itemID + "' value='"+netto+"'></td>";
row += "<td><input size='5'  maxlength='128' id='ii-unit-" + itemID + "' name='ii-unit-" + itemID + "' value='"+unit+"'></td>";
row += "<td><input size='5'  maxlength='6' id='ii-qty-" + itemID + "' name='ii-qty-" + itemID + "' value='"+qty+"'></td>";
row += "<td><select id='ii-vat-" + itemID + "' name='ii-vat-" + itemID + "'>" + vatSelect + "</select></td>";
row += "<td><a onclick='delInvoiceItem(\"item" + itemID + "\")'><b>-</b> Usuń</a></td></tr>";

$('#invoiceItems tr:last').after(row);

itemID++;
}

执行示例:

addInvoiceItemValue('yyy','','676.76','','1','23');
addInvoiceItemValue('fgh','','777.00','','1','8');

这是功能很好的工作:

function addInvoiceItem() {

var vatSelect = "<option value='23'>23%</option><option value='22'>22%</option><option value='8'>8%</option><option value='7'>7%</option><option value='5'>5%</option><option value='3'>3%</option><option value='0'>0%</option><option value='zw'>zw.</option>";
var row = "<tr id='item" + itemID + "'><td><input size='30' maxlength='300' id='ii-name-" + itemID + "' name='ii-name-" + itemID + "' value=''></td>";
row += "<td><input size='6'  maxlength='50' id='ii-pkwiu-" + itemID + "' name='ii-pkwiu-" + itemID + "' value=''></td>";
row += "<td><input size='6'  maxlength='16' id='ii-netto-" + itemID + "' name='ii-netto-" + itemID + "' value='0'></td>";
row += "<td><input size='5'  maxlength='128' id='ii-unit-" + itemID + "' name='ii-unit-" + itemID + "' value=''></td>";
row += "<td><input size='5'  maxlength='6' id='ii-qty-" + itemID + "' name='ii-qty-" + itemID + "' value='1'></td>";
row += "<td><select id='ii-vat-" + itemID + "' name='ii-vat-" + itemID + "'>" + vatSelect + "</select></td>";
row += "<td><a onclick='delInvoiceItem(\"item" + itemID + "\")'><b>-</b> Usuń</a></td></tr>";

$('#invoiceItems tr:last').after(row);

itemID++;
}

3 个答案:

答案 0 :(得分:3)

v23v22v8v7v5v3v0,{{1}并不总是在所有代码路径中定义vzw

这会导致脚本失败。


您应该将功能更改为

itemdID

但还必须定义itemID。

答案 1 :(得分:0)

什么时候支持执行?

虽然这在技术上是不好的编码实践,但测试一下:

 <a href='#'  onClick="javascript: function('value');" > Click Me </a>

如果您单击,但仍然无效,则表明您的功能存在问题。如果单击它并且它起作用,则首先不会调用该函数。

答案 2 :(得分:0)

您还应该检查您的选择器。

$('#invoiceItems tr:last').after(row);

尝试在更简单的地方添加它。再做一个div,......

 

然后使用选择器$('#result');

在任何情况下,如果您的选择器是坏的,它将永远不会执行,它不会抛出错误b / c它从来没有理由做你告诉它。现在我想到了,我认为这是问题所在。

帮我一个忙,试试

$('#invoiceItems tr:last').each(alert('exist???'));

如果它没有提醒,您的选择器很可能无法正常工作。 (对于符合标准的每件事,请发出警报)