【发布时间】:2021-03-07 17:39:45
【问题描述】:
我正在尝试破解 SquareSpace 网站以更改从 GET 变量中选择的下拉菜单的值。
我正在努力引用 via document.getElementsByClassName 或 document.getElementsByID 的 DOM 元素,因此我可以使用 JS 更改值。
SquareSpace 对元素有奇怪的引用,并且 HTML 无法更改,尤其是在这种情况下。我是一个 JavaScript 新手,可以从专家那里获得一些帮助...
问题:如何在 JavaScript 中引用下拉菜单的 DOM 元素?可以使用document.getElementBy...?
<div class="product-variants" data-item-id="5f6d19150f4fd9415d8a1586" data-variants="[{"attributes":{"Size":"Small | 100 Photos"},"optionValues":[{"optionName":"Size","value":"Small | 100 Photos"}],"id":"68115c8d-399e-475b-8ea9-9543ad86cb02","sku":"SQ5845728","price":11900,"salePrice":0,"priceMoney":{"currency":"USD","value":"119.00"},"salePriceMoney":{"currency":"USD","value":"0.00"},"onSale":false,"unlimited":true,"qtyInStock":0,"width":0.0,"height":0.0,"weight":0.0,"imageIds":[],"images":[],"len":0.0},{"attributes":{"Size":"Medium | 250 Photos"},"optionValues":[{"optionName":"Size","value":"Medium | 250 Photos"}],"id":"dcfe8568-7199-4e68-91e2-d0f202fecdf7","sku":"SQ2105082","price":26900,"salePrice":0,"priceMoney":{"currency":"USD","value":"269.00"},"salePriceMoney":{"currency":"USD","value":"0.00"},"onSale":false,"unlimited":true,"qtyInStock":0,"width":0.0,"height":0.0,"weight":0.0,"imageIds":[],"images":[],"len":0.0},{"attributes":{"Size":"Large | 500 Photos"},"optionValues":[{"optionName":"Size","value":"Large | 500 Photos"}],"id":"494878cf-2af2-422c-91ec-e6d1850423aa","sku":"SQ9044986","price":49900,"salePrice":0,"priceMoney":{"currency":"USD","value":"499.00"},"salePriceMoney":{"currency":"USD","value":"0.00"},"onSale":false,"unlimited":true,"qtyInStock":0,"width":0.0,"height":0.0,"weight":0.0,"imageIds":[],"images":[],"len":0.0}]" data-animation-role="content">
<div class="variant-option">
<div class="variant-option-title">Size: </div>
<div class="variant-select-wrapper">
<select aria-label="Select Size" data-variant-option-name="Size">
<option value="">Select Size</option>
<option value="Small | 100 Photos">Small | 100 Photos</option>
<option value="Medium | 250 Photos">Medium | 250 Photos</option>
<option value="Large | 500 Photos">Large | 500 Photos</option>
</select>
</div>
<div class="variant-radiobtn-wrapper" data-variant-option-name="Size">
<input type="radio" class="variant-radiobtn" value="Small | 100 Photos" name="variant-option-Size" id="variant-option-Size-Small | 100 Photos"/>
<label for="variant-option-Size-Small | 100 Photos">Small | 100 Photos</label>
<input type="radio" class="variant-radiobtn" value="Medium | 250 Photos" name="variant-option-Size" id="variant-option-Size-Medium | 250 Photos"/>
<label for="variant-option-Size-Medium | 250 Photos">Medium | 250 Photos</label>
<input type="radio" class="variant-radiobtn" value="Large | 500 Photos" name="variant-option-Size" id="variant-option-Size-Large | 500 Photos"/>
<label for="variant-option-Size-Large | 500 Photos">Large | 500 Photos</label>
</div>
</div>
</div>
注意 - 我可以使用 .page-section[data-section-id="5f7bc0326befc806d06d1e5b"] 选择器在 CSS 中引用 data-item-id。
【问题讨论】:
-
你忘了这个问题吗?所有这些都建立起来和背景故事......但毫无疑问。鉴于您这么说,到底是什么问题:“我可以使用 .page-section[data-section-id="5f7bc0326befc806d06d1e5b"] 选择器引用 CSS 中的数据项 ID。"
-
@RandyCasburn 对不起。上面的问题。
-
好的-好的开始-但是哪个元素?您可以像获得包装器一样获得
<select>:select[data-variant-option-name=Size]。拥有该 DOM 节点后,选项数组位于options属性中。是这样吗? -
对......但我对语法感到困惑。
var x = document.getElementsByClassName("select[data-variant-option-name=Size]").id; alert(x);这就是我所拥有的——但它不起作用。再说一次,我是 JS 新手,根据我读过的文档,我有点难过 -
我希望发送一个 GET 字符串 ?size=Small%20%7C%20100%20Photos 并更改下拉菜单的选择。