我有一些输入值包含在一堆div和一个表单中。我对js知之甚少,并希望在页面加载时使用greasemonkey来设置值。
以下显示了获取值的div和表单的顺序。
<div data-role="page" id="finalTest">
<div data-role="content">
<form class="cmxform" id="ftForm">
<div id="finalTestForOtherDiv" >
<div data-role="fieldcontain" class="special-spacing">
<div class="input-div">
<label id="finalTestBeforeAcTgrLabel" for="finalTestBeforeAcTg" data-insight="true"
class="mandatory" data-default="mandatory"><img class="label-image" alt="" src="../Images/icon-alert.png" />AC V (T/G):</label>
<input type="text" id="finalTestBeforeAcTg" name="finalTestBeforeAcTg" value="" style="width:100px; display:inline-block;"
data-bind="binder.BeforeAcTg" data-bind-action-when-hidden="Ignore" />
<span class="ui-content" style="padding-left:7px;">V</span>
<div class="error-message"><ul></ul></div>
</div>
这是我尝试使用的脚本,但什么也没做。
// ==UserScript==
// @name Final Test
// @description Final test results
// @include https://techaccess.ad.qintra.com/WorkJobs/WorkJobs.aspx#finalTest
// ==/UserScript==
document.getElementById("finalTestBeforeAcTg").value = "0.00";
答案 0 :(得分:5)
document.getElementById("finalTestBeforeAcTg").value = "your value";
答案 1 :(得分:3)
如果您的脚本尝试无效,可能是因为以下一项或多项:
@include
限制性太强。对于问题1,请将脚本更改为:
// ==UserScript==
// @name Final Test
// @description Final test results
// @include http://techaccess.ad.qintra.com/WorkJobs/*
// @include https://techaccess.ad.qintra.com/WorkJobs/*
// ==/UserScript==
alert ("Script start.");
var finTestInput = document.getElementById ("finalTestBeforeAcTg");
if (finTestInput) {
finTestInput.value = "0.00";
}
else {
alert ("The target input does not exist yet!")
}
请注意,如果您使用 Firebug (您应该),请将alert()
更改为unsafeWindow.console.log()
s。
对于问题2,请使用waitForKeyElements
实用程序。例如,请参阅this answer。
对于问题3,我们几乎无法访问该页面以确定正确的事件顺序 让我们访问该页面,或者使用Firebug(和“事件”面板)来查明它,或者可能是页面的HTML和页面的JS文件的快照,Pastebin.com就足够了(也许)。