2014-10-15 1 views
0

Я беру старую игрушку VB.NET, которую я сделал в 2006 году, и пытаюсь преобразовать ее в HTML/JavaScript/CSS3, поэтому ее функциональность может быть встроена в страницу на Tumblr. Тем не менее, мне удалось получить элемент на 99%, преобразованный из формы VB.NET в форму JavaScript. Проблема в том, что элемент не будет кодироваться.Почему этот портированный JavaScript из VB.NET не выполняется?

Это ниже является HTML тела моего веб-порта:

<table id="jewelryjiddyapp"><tr> 
<td colspan="2"><div id="logofield"><p id="JiddyMainLogo">Jewelry Jiddy's</p> 
<p id="JiddySubLogo">Wedding Ring Store</p></div></td> 
<td> 
<div class="fieldlabel" style="margin-top:25px;">Model Name</div> 
<form> 
<select id="modelBox"> 
<option id="heartsinlavaflow">Hearts in Lavaflow</option> 
<option id="scarofafrica">Scar of Africa</option> 
<option id="monkeysuncle">Monkey's Uncle</option> 
<option id="flatteringfool">Flattering Fool</option> 
<option id="stealdeal">Steal Deal</option> 
<option id="arweethearyet">Arwee Thearyet</option> 
<option id="checkbouncer">Checkbouncer</option> 
<option id="worthyoursoul">Worth-Your-Soul</option> 
<option id="therough">The Rough</option> 
<option id="canyudrspecial">Canyu Dr. Special</option> 
<option id="viderzhen">Viderzhen</option> 
<option id="fiberglasschicken">Fiberglass Chicken</option> 
<option id="pinkpuma">Pink Puma</option> 
</select> 
</form> 
<p class="limitnotice">Limit 1 Model Type per Sale</p> 
</td> 
</tr><tr> 
<td> 
<div class="fieldlabel">Number of Items</div> 
<form id="noifield"> 
<input id="NOI-1" name="noi" type="radio" />1 
<input id="NOI-2" name="noi" type="radio" />2 
<input id="NOI-3" name="noi" type="radio" />3 
<input id="NOI-4" name="noi" type="radio" />4 
<input id="NOI-5" name="noi" type="radio" />5 
</form> 
<p class="limitnotice">Limit 5 per Sale</p> 
</td> 
<td> 
<div class="fieldlabel">Sales Code</div> 
<form> 
<select id="saleBox"> 
<option id="normalsale">Normal</option> 
<option id="the25off">25% Off Sale</option> 
<option id="the40off">40% Off Sale</option> 
<option id="the15off">15% Senior Discount</option> 
</select> 
</form> 
<form style="text-align:center;"> 
<input class="fieldlabel" id="findSalesTotal" type="button" value="Find Sales Total" 
onclick="findSalesTotal(); return true;" /> 
</form> 
</td> 
<td> 
<div class="fieldlabel">Total Amount Due</div> 
<p id="finalSalesTotal"></p> 
</td> 
</tr></table> 

Вот JavaScript:

<script language="javascript" type="text/javascript"> 
function findSalesTotal() { 
var itemValue; 
var NOI; 
var itemTotal; 
var SalesCode; 
var DueSansTax; 
var SalesTax = 1.06; 
var TAD; 
if (document.getElementById('heartsinlavaflow').selected = true) 
{itemValue = 190;} 
else if (document.getElementById('scarofafrica').selected = true) 
{itemValue = 220;} 
else if (document.getElementById('monkeysuncle').selected = true) 
{itemValue = 321.15;} 
else if (document.getElementById('flatteringfool').selected = true) 
{itemValue = 118.65;} 
else if (document.getElementById('stealdeal').selected = true) 
{itemValue = 5.75;} 
else if (document.getElementById('arweethearyet').selected = true) 
{itemValue = 88.73;} 
else if (document.getElementById('checkbouncer').selected = true) 
{itemValue = 532.9;} 
else if (document.getElementById('worthyoursoul').selected = true) 
{itemValue = 6685.19;} 
else if (document.getElementById('therough').selected = true) 
{itemValue = 12.18;} 
else if (document.getElementById('canyudrspecial').selected = true) 
{itemValue = 86.14;} 
else if (document.getElementById('viderzhen').selected = true) 
{itemValue = 121.15;} 
else if (document.getElementById('fiberglasschicken').selected = true) 
{itemValue = 132.17;} 
else if (document.getElementById('pinkpuma').selected = true) 
{itemValue = 93;} 
else 
{itemValue = 0; 
alert("Select a valid model, Model Select Error");} 
if (document.getElementById('NOI-1').checked = true) 
{NOI = 1;} 
else if (document.getElementById('NOI-2').checked = true) 
{NOI = 2;} 
else if (document.getElementById('NOI-3').checked = true) 
{NOI = 3;} 
else if (document.getElementById('NOI-4').checked = true) 
{NOI = 4;} 
else if (document.getElementById('NOI-5').checked = true) 
{NOI = 5;} 
else 
{NOI = 0; alert("Select a number of items. Number of Items Error");} 
if (document.getElementById('normalsale').selected = true) 
{SalesCode = 1;} 
else if (document.getElementById('the25off').selected = true) 
{SalesCode = 0.75;} 
else if (document.getElementById('the40off').selected = true) 
{SalesCode = 0.6;} 
else if (document.getElementById('the15off').selected = true) 
{SalesCode = 0.85;} 
else 
{SalesCode = 0; alert("Invalid Entry, Sales Code Error");} 
itemTotal = itemValue * NOI; 
DueSansTax = itemTotal * SalesCode; 
TAD = DueSansTax * SalesTax 
document.getElementById('finalSalesTotal').innerHTML = TAD;} 
</script> 

Я не эксперт JavaScript, но сценарий выглядит хорошо сформирован меня. Поэтому я не могу понять, почему это вообще не выполняется. Когда все будет работать правильно, в поле Total Amount Due появится числовое значение, которое я могу проанализировать как деньги, как только узнаю, что получаю показание. Но пока я не получаю никаких результатов. Есть ли у кого-нибудь предложения об этом?

Первоначально это было частью задания класса десять лет назад. Тогда я скомпилировал его в VB.NET, и все работает нормально. Я удалил игровые «чит-коды», похожие на игры, которые дали забавные результаты, так как я хочу получить базовый скрипт для работы, прежде чем сделать его симпатичным.

И нет, я точно не помню, как я это сделал в VB.NET. Я не делал этого уровня компиляции программ с 2007 года.

ОБНОВЛЕНИЕ: Спасибо за «окно». совет. Но теперь есть новая проблема: он не помнит выбора. Например: когда я установил его в «Scar of Africa», он возвращается к «Hearts в Lavaflow». Когда я устанавливаю переключатели на два, они восстанавливаются до 1. Когда я выбираю продажу, я перенаправляюсь в нормальный режим. Как получить выбор данных, сохраненный до вывода?

PS: Я удалил CSS, так как некоторые говорили, что он мешает и в любом случае не является частью проблемы.

+0

Вы получаете конкретную ошибку? Кроме того, это много кода для прохода - можете ли вы уменьшить проблему? – sherb

+0

Попробуйте изменить 'onclick = 'findSalesTotal(); return true;" 'to' onclick = "window.findSalesTotal(); return true;". – Stryner

ответ

1

Ваша проблема заключается в том, что идентификатор вашей кнопки является findSalesTotal и имя вашего функционального направления является findSalesTotal.

Вот jsfiddle того, который не работает: http://jsfiddle.net/gzej4jm5/1/ Это один делает работу: http://jsfiddle.net/gzej4jm5/2/

браузер или JavaScript двигателя думает, что вы пытаетесь сослаться на элемент DOM (ваша кнопка) в вашем onclick события.

Либо измените идентификатор своей кнопки, либо измените имя функции и обновите событие onclick кнопки. Я сделал последнее в рабочей скрипке, изменив имя функции на findSalesTotalFunction.

Соответствующие HTML:

<input class="fieldlabel" id="findSalesTotal" type="button" 
value="Find Sales Total" onclick="findSalesTotalFunction(); return true;" /> 

Соответствующий JavaScript:

function findSalesTotalFunction() 
+0

К сожалению, ps2goat, когда я нажимаю «5» на переключателях, он по-прежнему выполняет только вычисления для 1 и по умолчанию использует модель, а по умолчанию - режим продаж. Он не должен использоваться по умолчанию. Он должен помнить мои выборы. – IvanRider

+0

Возможно, так, но ваша главная проблема заключалась в том, что произошли ошибки javascript, в результате чего ваш метод даже не вызывался. – ps2goat

0

Оказывается, что самая главная причина для формы бытия смутил, что "= истина" часть не было необходимости. Это была избыточная логика. Удалив это, я получил форму для работы.Я даже добавил немного подправить, я нашел здесь:

How to print a number with commas as thousands separators in JavaScript

Таким образом, есть запятые. Так как я не мог получить поле Код продаж, чтобы принимать случайные строки, «чит-коды» в версии VB.NET не переносятся. Но это будет хорошо работать как образец элемента в каталоге Widgets для Dozerfleet Labs для порта веб-виджета. Те, кто хочет глупых читов, просто должны будут скачать версию VB.NET, которая будет предоставлена. Спасибо за помощь, всем.

Смежные вопросы