我的sharepoint网页中有以下标记(我无法控制标记): -
<span dir="none">
<select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText">
<option value="f**">f**</option>
<option value="m**">m**</option>
<option value="m**">m**</option>
<option value="t**">t**</option>
<option value=""></option>
</select>
</span>
<br>
<span class="ms-metadata">AddSourceHere</span>
现在我试图找到一种使用javascript或jquery的方法,动态地将选择列表之后的span的文本从“AddSourceHere”更改为其他内容。
我想做什么: -
答案 0 :(得分:2)
您已在评论中指出,select元素上的ID可以信任,但是还有其他.ms-metadata
元素不应更改,因此我们不能仅依赖于该类。< / p>
三要注意的四个部分:
$
,需要在jQuery选择器中进行转义(\\$
)next()
无法从<select>
遍历到<span>
。而是使用nextAll()
eq:(0)
或first()
.parent()
来补偿行动中的一个例子:
$("#OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_\\$DropDownChoice") // the select element
.parent() // climb up to the parent span
.nextAll('span.ms-metadata:eq(0)') // get the first following .ms-metadata
.text('This text was changed') // change the text
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span dir="none">
<select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText">
<option value="f**">f**</option>
<!-- other options omitted for brevity -->
</select>
</span>
<br>
<span class="ms-metadata">AddSourceHere</span>
<span class="ms-metadata">This should not be affected</span>
答案 1 :(得分:1)
假设ms-metadata类只有一个范围和/或您只关心该类的第一个范围......
使用Javascript:
Import-Module ActiveDirectory
Write-Host 'This script is used to check what users have access to a particular network drive.' `n 'Please wait...'
Start-Sleep 4
Write-Host 'Below is a list of the available DJ network drive security groups:'
Start-Sleep 3
Get-ADGroup -Filter * -SearchBase "OU=Network Drives,OU=DJ Security Groups,OU=Security Groups,DC=lan,DC=cyclops-electronics,DC=com" | FL Name
Start-Sleep 3
$SecurityGroup = Read-Host -Prompt 'From the list, please enter a security group name which corresponds to the network drive you wish to check'
Get-ADGroupMember -Identity $SecurityGroup | select name |export-csv
-Path C:\SQLApps\GroupMembers.csv -Append
Start-Sleep 1
Write-Host 'This script has completed successfully and has been exported to C:\SQLApps\GroupMembers.csv'
jQuery的:
document.getElementsByClassName('ms-metadata')[0].innerHTML = 'something else';
答案 2 :(得分:1)
您只需按ID找到下拉列表,然后使用$(this)
查找范围。
nextAll
&#13;
$('#OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_\\$DropDownChoice')
.parent('span')
.nextAll('span.ms-metadata:eq(0)')
.text("Some new value");
&#13;
请注意,一个棘手的问题是您的select id中有<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span dir="none">
<select id="OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice" title="Assign To Approver Required Field" class="ms-RadioText">
<option value="f**">f**</option>
<option value="m**">m**</option>
<option value="m**">m**</option>
<option value="t**">t**</option>
<option value=""></option>
</select>
</span>
<br>
<span class="ms-metadata">AddSourceHere</span>
,在jQuery中用作选择器时需要进行转义。
你也可以用直接的javascript做到这一点,但它有点讨厌。
$
&#13;
var select = document.getElementById('OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_$DropDownChoice');
select.parentNode.nextSibling.nextSibling.nextSibling.nextSibling.innerHTML = "Some text here"
&#13;
答案 3 :(得分:0)
我正在尝试使用javascript或jquery找到一种方法来动态更改选择列表后面的span的文本
如果您的标题文字本质上是唯一的
$("select[title='Assign To Approver Required Field']").nextAll('span').text('whatever you like')
答案 4 :(得分:0)
您可以通过多种方式执行此操作,具体取决于您希望如何构建代码以及您愿意接受哪些依赖项。使用jQuery:
取决于范围的类
$('.ms-metadata').text('something else')
取决于选择
$('select.ms-radioText').nextAll('span').text('something else')
你甚至可以将这两个结合起来更加具体:
$('select.ms-radioText').sibling('.ms-metadata').text('something else')
这些只是基于您向我们展示的内容的示例。还有其他方法,但适当的方法将取决于您的其余代码。
修改强>
根据您更新的问题,这是使用jQuery再次执行所需操作的最直接方法。将文字分配给变量newText
(请注意$
字符has to be escaped,并带有两个正斜杠,例如\\$
}。
var selectID = "OrderAssignToApprover_9002e96d-1276-4355-9a2a-0c565d8079db_\\$DropDownChoice";
var newText = "something else";
$("#"+selectID).nextAll('span:eq(0)').text(newText);