Почему этот перенесенный JavaScript из VB.NET не выполняется?

0

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

Ниже приведен 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 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
    Вы получаете конкретную ошибку? Кроме того, это много кода, чтобы разобраться - вы можете сузить проблему?
  • 0
    Попробуйте изменить onclick="findSalesTotal(); return true;" to onclick="window.findSalesTotal(); return true;" ,
Теги:
porting

2 ответа

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, по умолчанию модель и режим продаж по умолчанию. Это не должно по умолчанию. Следует помнить мои выборы.
  • 0
    Может быть и так, но ваша главная проблема заключалась в том, что возникали ошибки JavaScript, в результате чего ваш метод даже не вызывался.
0

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

Как напечатать число с запятыми как разделители тысяч в JavaScript

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню