2011-01-12 11 views
0

には誤りがこの機能は問題ありません:この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++; 
} 

例の実行:

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++; 
} 

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

そして、ここでは、その仕事の罰金機能です

+0

あなたの質問は?そして、エラーは何ですか? – Oded

+0

"コンソールにエラーがありません"、最初の機能は実行されていません。どうして?なにが問題ですか? – shman

+0

"v-variables"はどこから来ますか? (v23、v22、v8など) –

答えて

3

v23,v22,v8,v7,v5v3v0vzwおよびitemdIDは、すべてのコードパスで必ずしも定義されているとは限りません。

これにより、スクリプトが失敗します。


あなたは

function addInvoiceItemValue(name,pkwiu,netto,unit,qty,vat) { 
    var vats = ['23','22','8','7','5','3','0','zw']; 

    var vatSelect = ''; 
    for (var i = 0; i < vats.length; i++) 
    { 
     vatSelect += '<option value="'+vats[i]+'"'; 
     if (vat == vats[i]) 
      vatSelect += ' selected="selected"'; 
     vatSelect += '>'+vats[i] + '%</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++; 
} 

にあなたの関数を変更する必要がありますが、ITEMIDも定義する必要があります。

+0

v23、v22、v8、v7、v5、v3、v0、vzwは関数内で定義され、itemdIDは関数の外で定義されます。 – shman

+0

'if(vat == '23')v23 =" selected = 'selected' ";' vatが '23'と等しくない場合はどうなりますか? –

+0

@shman、オプションの作成を自動化する回避策を含めるように更新されました。 –

0

実行するのがいつサポートされますか?

これでこの技術的に悪いコーディングの練習、テスト中:

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

あなたがクリックして、それはまだ動作しない場合、それはあなたの関数の問題です。クリックして動作すれば、関数は最初に呼び出されることはありません。

+0

ページパーツがロードされています(jQuery。load()) – shman

+0

アラート( 'test')を最初の行に挿入しましたか?あたかもコンソールビューを持っているかのように、一般的には、何かを介してあなたの方法を警告することができます.... – Scott

+0

あなたのコメントは、この問題をデバッグするのを助けました。ソリューション: – shman

0

また、セレクタを確認する必要があります。

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

シンプルな場所に追加してください。別のdivを作成します。

次に、セレクタ$( '#result')を使用します。

いずれにしても、セレクタが悪い場合は実行されず、あなたが話したことを起こさなかったというエラーは発生しません。今私はそれについて考える、私はこれが問題だと思う。それは警戒しない場合

は私に好意を行うと

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

を試してみてください、あなたのセレクタはほとんど機能していません。 (条件を満たしているそれぞれのものについて、警告をしてください)

+0

セレクタが動作し、通知を出します。 – shman

+0

クール。結局、それは問題ではありませんでした。これらは、一般的なトラブルシューティングに適用されるような小さなものです。機能を書き換える人と競争しにくい! :) – Scott

関連する問題