Измените параметры выпадающего меню, используя javascript на Apple.com. РЕШИТЕ ​​ЭТО ОБЕД НА МНЕ - PullRequest
1 голос
/ 20 октября 2019

Попытка изменить выбранные параметры с помощью JavaScript, но по какой-то причине не работает. Путешествовал по всему интернету, чтобы найти решение, но не смог его найти. Нужна помощь !

Чтобы получить исходный код, перейдите на https://www.apple.com/shop/trade-in, в «Выберите свое устройство, чтобы получить оценку обмена». Выберите смартфон, Apple, iPhone XS MAX, выберите Да для хорошего состояния, выберите Box«Обмен на подарочную карту».

Тогда вы должны увидеть поле формы, и эта чертова опция состояния по умолчанию не изменится для меня динамически, используя javascript в консоли.

Теперь попробуйте изменить состояние консоли на MA (Массачусетс). В настоящее время это «штат» по умолчанию.

Первый человек, который решит этот ланч, находится на мне, выпадающий из вашей электронной почты PayPal. Или отправьте свой адрес электронной почты на arizona777@gmail.com. Спасибо ! :)

Исходный код:

<select aria-required="true" aria-describedby="tradeUp.shipping.moduleData.address-state-error" 
aria-invalid="false" data-autom="address-field-state" value="" 
data-recon-click="binding,actionClick,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-mouseover="binding,actionMouseOver,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-mouseout="binding,actionMouseOut,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-input="binding,setValue,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-change="binding,setValue,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-focusin="binding,setFocus,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-focusout="binding,clearFocus,tradeUp.shipping.moduleData.address.state,binding" 
id="tradeUp.shipping.moduleData.address-state" required="" 
class="form-dropdown form-dropdown-selectnone">

<option value="" selected="true">State</option>
<option value="AA">AA</option>
<option value="AE">AE</option>
<option value="AP">AP</option>
<option value="AL">AL</option>
<option value="AK">AK</option>
<option value="AZ">AZ</option>
<option value="AR">AR</option>
<option value="AS">AS</option>
<option value="CA">CA</option>
<option value="CO">CO</option>
<option value="CT">CT</option>
<option value="DE">DE</option>
<option value="DC">DC</option>
<option value="FL">FL</option>
<option value="GA">GA</option>
<option value="GU">GU</option>
<option value="HI">HI</option>
<option value="ID">ID</option>
<option value="IL">IL</option>
<option value="IN">IN</option>
<option value="IA">IA</option>
<option value="KS">KS</option>
<option value="KY">KY</option>
<option value="LA">LA</option>
<option value="ME">ME</option>
<option value="MD">MD</option>
<option value="MA">MA</option>
<option value="MI">MI</option>
<option value="MN">MN</option>
<option value="MS">MS</option>
<option value="MO">MO</option>
<option value="MT">MT</option>
<option value="MP">MP</option>
<option value="NE">NE</option>
<option value="NV">NV</option>
<option value="NH">NH</option>
<option value="NJ">NJ</option>
<option value="NM">NM</option>
<option value="NY">NY</option>
<option value="NC">NC</option>
<option value="ND">ND</option>
<option value="OH">OH</option>
<option value="OK">OK</option>
<option value="OR">OR</option>
<option value="PA">PA</option>
<option value="PI">PI</option>
<option value="PR">PR</option>
<option value="PW">PW</option>
<option value="RI">RI</option>
<option value="SC">SC</option>
<option value="SD">SD</option>
<option value="TN">TN</option>
<option value="TX">TX</option>
<option value="UT">UT</option>
<option value="US">US</option>
<option value="VT">VT</option>
<option value="VA">VA</option>
<option value="VI">VI</option>
<option value="WA">WA</option>
<option value="WV">WV</option>
<option value="WI">WI</option>
<option value="WY">WY</option>

</select>


1 Ответ

1 голос
/ 20 октября 2019

Редактировать:

Теперь мне удалось добраться до упомянутого диалога. Если вы выполните следующее в консоли, вы сможете изменить состояние на «MA»

ch=new MouseEvent('change', {view:window,bubbles:true});
s=document.getElementById('tradeUp.shipping.moduleData.address-state');
s.value='MA';
s.dispatchEvent(ch); 

Похоже, что окружение начальной загрузки поля выбора ожидает событие изменения, которое мы можем сгенерировать с помощьювышеуказанные команды.

После некоторого дальнейшего тестирования я обнаружил, что в качестве аргумента "option" в приведенном выше коде достаточно {bubbles:true} (вы можете пропустить часть view:window).


Если у вас возникли проблемы с обращением к элементу select с его необычным идентификатором: вам необходимо замаскировать в нем символы ., так как в противном случае они будут интерпретироваться как специальные символы, обозначающие идентификаторы класса. Таким образом, селектор для document.querySelector() должен выглядеть примерно так: '#tradeUp\\.shipping\\.moduleData\\.address-state'.

. В некоторых последующих строках ниже вы найдете способ изменить текущий выбор элемента select. В этом случае я изменил его на «MA».

document.querySelector('#change').addEventListener('click',function(){
  document.querySelector('#tradeUp\\.shipping\\.moduleData\\.address-state').innerHTML=
 ['abc','def','ghi','jki','lmn'].map(function(s){return '<option>'+s+'</option>';}).join('');
})

// in case you wanted to change the value of the
// select programmatically, do the following:

document.querySelector('#tradeUp\\.shipping\\.moduleData\\.address-state').value='MA';
<select aria-required="true" aria-describedby="tradeUp.shipping.moduleData.address-state-error" 
aria-invalid="false" data-autom="address-field-state" value="" 
data-recon-click="binding,actionClick,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-mouseover="binding,actionMouseOver,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-mouseout="binding,actionMouseOut,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-input="binding,setValue,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-change="binding,setValue,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-focusin="binding,setFocus,tradeUp.shipping.moduleData.address.state,binding" 
data-recon-focusout="binding,clearFocus,tradeUp.shipping.moduleData.address.state,binding" 
id="tradeUp.shipping.moduleData.address-state" required="" 
class="form-dropdown form-dropdown-selectnone">

<option value="" selected="true">State</option><option value="AA">AA</option>
<option value="AE">AE</option>
<option value="AP">AP</option>
<option value="AL">AL</option>
<option value="AK">AK</option>
<option value="AZ">AZ</option>
<option value="AR">AR</option>
<option value="AS">AS</option>
<option value="CA">CA</option>
<option value="CO">CO</option>
<option value="CT">CT</option>
<option value="DE">DE</option>
<option value="DC">DC</option>
<option value="FL">FL</option>
<option value="GA">GA</option>
<option value="GU">GU</option>
<option value="HI">HI</option>
<option value="ID">ID</option>
<option value="IL">IL</option>
<option value="IN">IN</option>
<option value="IA">IA</option>
<option value="KS">KS</option>
<option value="KY">KY</option>
<option value="LA">LA</option>
<option value="ME">ME</option>
<option value="MD">MD</option>
<option value="MA">MA</option>
<option value="MI">MI</option>
<option value="MN">MN</option>
<option value="MS">MS</option>
<option value="MO">MO</option>
<option value="MT">MT</option>
<option value="MP">MP</option>
<option value="NE">NE</option>
<option value="NV">NV</option>
<option value="NH">NH</option>
<option value="NJ">NJ</option>
<option value="NM">NM</option>
<option value="NY">NY</option>
<option value="NC">NC</option>
<option value="ND">ND</option>
<option value="OH">OH</option>
<option value="OK">OK</option>
<option value="OR">OR</option>
<option value="PA">PA</option>
<option value="PI">PI</option>
<option value="PR">PR</option>
<option value="PW">PW</option>
<option value="RI">RI</option>
<option value="SC">SC</option>
<option value="SD">SD</option>
<option value="TN">TN</option>
<option value="TX">TX</option>
<option value="UT">UT</option>
<option value="US">US</option>
<option value="VT">VT</option>
<option value="VA">VA</option>
<option value="VI">VI</option>
<option value="WA">WA</option>
<option value="WV">WV</option>
<option value="WI">WI</option>
<option value="WY">WY</option>

</select>
<button id="change">change options</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...